2017-01-25 2 views
0

У меня есть настройка файла php для загрузки изображений на сервер Amazon через AWS. Я пришел к сообщению об ошибке, которое странно появляется на моем prod-сервере (сервере amazon), но не на моем dev-сервере (просто на регулярном php-сервере). Сервер Amazon ранее забрасывал ошибки, когда что-то не структурировано именно так, как оно хочет. Например, если тег a имеет href /home, он приведет к странице с ошибкой, если я не изменю тег на /home/.php - переместить загруженный файл в false

В любом случае, я сужу в своем PHP-скрипте, где ошибка, и моя функция php move_uploaded_file оценивает значение false и останавливает мой файл с начала загрузки на Amazon s3 (на этом этапе файл находится на сервере, где сайт размещен, но еще не на s3). Вот мое, если заявление с некоторыми переменными, объявленными выше, которые должны быть вычисляемыми верно:

$target_dir = "../uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file)) { 
    //upload to s3 
} else { 
    //error 
} 

Я вставил следующий код выше, если заявление, чтобы увидеть, что это было выплюнуть, и вот что она оценивается в комментариях под этим:

echo json_encode($target_file); 
//  "..\/uploads\/Grad.jpeg" 

    echo $_FILES["fileToUpload"]["tmp_name"]; 
    // /tmp/phpQA1667 

    echo json_encode(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file)); 
    // false 

Я не эксперт по php и не могу поместить своего искателя в то, почему он оценивает значение false. Может ли кто-нибудь увидеть, где я ошибся?

+0

был перемещен файл, вы проверили? – JustOnUnderMillions

+0

Возможно, вы не можете перейти на ../uploads/? вы можете эхо __DIR__; чтобы показывать, где находится ваш абсолютный путь, а затем вы должны увидеть, действительно ли у вас есть ./uploads. если путь правильный, я бы проверял права папки –

+0

извините, но echo DIR; только отгоняет строку, говорящую DIR. Не уверен, правильно ли я сделал это? –

ответ

0

move_uploaded_file возвращает ложь в двух случаях:

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

Если имя файла является допустимым файлом загрузки, но по какой-либо причине его нельзя перемещать, никаких действий не будет, и move_uploaded_file() вернет FALSE. Кроме того, выдается предупреждение.

В любом случае, вы должны получить сообщение об ошибке в своем супермагале $ _FILES.

Сделайте print_r ($ _ FILES) и просмотрите любые сообщения об ошибках, которые он вам дает, и заполняется ли массив.

Как только вы обнаружите эту ошибку, вам будет легко определить точную причину проблемы.

Полный список ошибок можно найти на http://php.net/manual/en/features.file-upload.errors.php