Загрузка файла AWS Elastic Beanstalk не работает

Мы используем AWS Elastic Beanstalk для размещения приложений PHP, которые включают средства загрузки файлов, которые не работают. Мы установили php.ini для tmp_upload_dir в / tmp, но он все еще не работает.

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

Вот пример кода, который мы используем:

$imagePath = "/tmp/";

$allowedExts = array("gif", "jpeg", "jpg", "png", "GIF", "JPEG", "JPG", "PNG");
$temp = explode(".", $_FILES["img"]["name"]);
$extension = end($temp);

if ( in_array($extension, $allowedExts))
{
if ($_FILES["img"]["error"] > 0)
{
$response = array(
"status" => 'error',
"message" => 'ERROR Return Code: '. $_FILES["img"]["error"],
);
echo "Return Code: " . $_FILES["img"]["error"] . "<br>";
}
else
{

$filename = $_FILES["img"]["tmp_name"];
list($width, $height) = getimagesize( $filename );

move_uploaded_file($filename, $imagePath . $_FILES["img"]["name"]);

$response = array(
"status" => 'success',
"url" => $imagePath.$_FILES["img"]["name"],
"width" => $width,
"height" => $height
);

}
}
else
{
$response = array(
"status" => 'error',
"message" => 'something went wrong',
);
}

3

Решение

У меня была та же проблема, и я обнаружил, что нам нужны две вещи, обе из которых были помещены в файл .htaccess:

 php_value upload_tmp_dir "/tmp"php_value upload_max_filesize 10M

Каталог загрузки должен принадлежать веб-серверу, например, «webapp», или «daemon», или доступный для записи этой учетной записью. Кроме того, максимальный размер файла должен соответствовать вашим загрузкам.

В моем случае ограничение по загрузке было 2М по умолчанию, а мои файлы были 4М. Это привело к пустому массиву $ _FILES.

5

Другие решения

Других решений пока нет …