Почему move_uploaded_file не работает? - PullRequest
2 голосов
/ 09 октября 2011

Всякий раз, когда я пытаюсь переместить файл, он не работает и показывает «Файл изображения не загружен» ... Я просто хочу знать, где ошибка ...

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';

if( move_uploaded_file( $target, $destination ) ) {
    echo "Image file is successfully loaded";                           
} else {

   echo "Image file not uploaded.";
}
  • Я проверил журнал ошибок (tail -f /var/log/apache2/error.log), но ничего не нашел.
  • целевой и целевой каталоги имеют разрешения 777 .

Может кто-нибудь сказать мне, как найти ошибку. Есть идеи?

Ответы [ 3 ]

3 голосов
/ 09 октября 2011

Если вы не используете метод HTTP POST, тогда вы можете использовать rename()

rename($target, $destination);
2 голосов
/ 09 октября 2011

Файл был загружен в текущем запросе?

move_uploaded_file откажется перемещать файлы, которые не загружены. (т.е. $target должно равняться $_FILES[$field_name]['tmp_name']

Если он был загружен ранее, move_uploaded_file откажется работать (если он еще есть - PHP удалит его, если вы не обработаете файл при этой загрузке, если я правильно помню)

Если это на самом деле , а не файл, который был загружен с этим запросом, вы захотите использовать rename

0 голосов
/ 09 октября 2011

move_uploaded_file () работает только с файлами сообщений http.http://php.net/manual/en/function.move-uploaded-file.php

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

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';
if (copy($target, $destination)) {
   unlink($target);
} else {
   echo "Unable to copy $target to $destination.";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...