Я борется с этим более 8 часов, поэтому надеюсь, что кто-то может мне помочь. Я думаю, что просмотрел все сообщения по этой проблеме, но не смог найти решение.PHP move_uploaded_file() return FALSE
Ошибок нет, и /tmp
, и /var/www/test
принадлежат apache (www-data
) и имеют 775 разрешений.
Это PHP код:
$target_dir = $_SERVER["DOCUMENT_ROOT"] . "test/uploads/";
$target_file = $target_dir . basename($_FILES["pic"]["name"]);
$uploadOK = 1;
$image_file_type = pathinfo($target_file, PATHINFO_EXTENSION);
if(isset($_POST['submit'])) {
if($uploadOK === 0) {
echo "Upload failed!";
} else {
// This is where it stops...
// There is definitely something wrong with $target_file
if(move_uploaded_file($_FILES["pic"]["tmp_name"], $target_file)) {
echo "Success";
} else {
echo "Not uploaded...<br>";
echo move_uploaded_file($_FILES["pic"]["tmp_name"], $target_file) . "<br>";
echo $target_file . "<br>";
print_r($_FILES) . "<br>";
error_reporting(E_ALL);
}
}
Эти результаты я получаю:
Не загружено ...
/var/www/test/uploads/test.jpg
Array (
[pic] => Array (
[name] => test.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpKlzCxc
[error] => 0
[size] => 721090
)
)
Итак, что я делаю неправильно?
Ok, вот обновление:
- Проверка загрузки была сделана в начале сценария и работал, поэтому я не включил его в этом вопросе.
- Это код из www.w3schools.com, и я буду проверять другой источник (спасибо за указав, что из)
- После фиксации положения
error_reporting
(хороший вызов :)), наконец, получил целая куча «Permission Denied» предупреждения как я подозревал бы проблема, и вот они:
Предупреждение: move_uploaded_file (/var/www/test/uploads/test.jpg): не удалось открыть поток: Разрешение отклонено в /var/www/test/upload.php в строке 47
Предупреждение: move_uploaded_file(): Не удается переместить '/ TMP/phpHzvhOA' к '' /var/www/test/uploads/test.jpg в /var/www/test/upload.php на линии 47
Строка 47:
if(move_uploaded_file($_FILES["pic"]["tmp_name"], $target_file)) {
набор разрешений для /var/www/test/upload.php:
-rwxrwxr-x 1 www-data www-data 2174 Sep 9 00:07 /var/www/test/upload.php
полная проверка ошибок и отображение? – nogad
Как выглядит ваша 'форма? Имеет 'enctyp'? – chris85
Файл, вероятно, уже существует с тем же именем. Одна из причин, по которым вы не должны использовать имена файлов, предоставленных пользователем. –