У меня есть настройка php-файла для загрузки изображений на сервер Amazon через AWS. Я пришел к сообщению об ошибке, которое странным образом отображается на моем сервере Prod (сервер Amazon), но не на моем сервере Dev (просто обычный сервер PHP). Сервер Amazon ранее выдавал ошибки, когда что-то не структурировано именно так, как он хочет. Например, если у тега есть Href /home
это приведет к ошибке на странице, если я не изменю тег на /home/
,
Во всяком случае, я сузился в моем скрипте PHP, где лежит ошибка и моя функция PHP move_uploaded_file
оценивает значение false и останавливает мой файл с начала загрузки на Amazon s3 (на данном этапе файл находится на сервере, на котором размещен сайт, но еще не на s3). Вот мое утверждение if с некоторыми объявленными выше переменными, которые должны иметь значение true:
$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
}
Я вставил следующий код над оператором if, чтобы увидеть, что он выплевывал, и вот что он оценил в комментариях под ним:
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 и, похоже, не могу определить, почему он оценивается как ложный. Кто-нибудь может увидеть, где я ошибся?
move_uploaded_file возвращает false в двух случаях:
Если имя файла не является допустимым загружаемым файлом, никаких действий не произойдет, и move_uploaded_file () вернет FALSE.
Если имя файла является допустимым загружаемым файлом, но не может быть перемещено по какой-либо причине, никаких действий не произойдет, и move_uploaded_file () вернет FALSE. Дополнительно будет выдано предупреждение.
В любом случае, вы должны получить ошибку обратно в свой суперглобальный $ _FILES.
Сделайте print_r ($ _ FILES) и посмотрите на любые сообщения об ошибках, которые он вам дает, и на вопрос, заполнен ли массив.
Как только вы обнаружите эту ошибку, вам будет легко определить точную причину проблемы.
Полный список ошибок можно найти на http://php.net/manual/en/features.file-upload.errors.php
Других решений пока нет …