Ошибка PHP move_uploaded_file ()?

Я использую следующий код, и он успешно выгружает файлы на моем локальном компьютере. Он показывает «Успешно загружено» на моем локальном компьютере.

// Upload file
$moved = move_uploaded_file($_FILES["file"]["tmp_name"], "images/" . "myFile.txt" );

if( $moved ) {
  echo "Successfully uploaded";         
} else {
  echo "Not uploaded";
}

Но когда Я использовал этот код на своем онлайн-сервере, тогда он не загружает файл, а просто показывает сообщение «Не загружено».

Как я могу узнать, в чем проблема, и как я могу отобразить реальную проблему для пользователя?

32
задан Awan 17 August 2010 в 11:12
поделиться

4 ответа

Убедитесь, что веб-сервер имеет разрешение на запись в каталог "images /"

40
ответ дан 27 November 2019 в 19:41
поделиться

Попробуйте следующее:

$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/images/";

if (is_dir($upload_dir) && is_writable($upload_dir)) {
    // do upload logic here
} else {
    echo 'Upload directory is not writable, or does not exist.';
}

Это мгновенно отметит все ошибки разрешения файлов.

36
ответ дан 27 November 2019 в 19:41
поделиться

Как я могу узнать, в чем проблема

Легко. Обратитесь к журналу ошибок веб-сервера.

Как я могу заставить отобразить реальную проблему пользователю?

НИКОГДА не делайте этого.
Обычный пользователь ничего не поймет из этой ошибки.
Вредоносный пользователь не должен получить никакой обратной связи, особенно в виде очень информативного сообщения об ошибке.

Просто покажите страницу с оправданиями.

Если у вас нет доступа к журналу ошибок сервера, ваша задача усложняется.
Есть несколько способов получить доступ к сообщениям об ошибках.

Для вывода сообщений об ошибках на экран можно добавить эти строки в код

ini_set('display_errors',1);
error_reporting(E_ALL);

или сделать пользовательский лог-файл ошибок

ini_set('log_errors',1);
ini_set('error_log','/absolute/path/tp/log_file');

и есть еще несколько способов.
, но вы должны понимать, что без фактического сообщения об ошибке вы не сможете двигаться. Трудно быть слепым в темноте

16
ответ дан 27 November 2019 в 19:41
поделиться

Проверяете ли вы, что файл загружен правильно? Возможно, вы превысили max_post_size или max_upload_filesize. При входе в систему с помощью FileZilla вы копируете файлы так же, как и вы, при загрузке с помощью PHP этот файл принадлежит пользователю, который запускает apache (например, www-data), попробуйте поставить chmod 755 для изображений.

2
ответ дан 27 November 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: