Мы используем 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',
);
}
У меня была та же проблема, и я обнаружил, что нам нужны две вещи, обе из которых были помещены в файл .htaccess:
php_value upload_tmp_dir "/tmp"php_value upload_max_filesize 10M
Каталог загрузки должен принадлежать веб-серверу, например, «webapp», или «daemon», или доступный для записи этой учетной записью. Кроме того, максимальный размер файла должен соответствовать вашим загрузкам.
В моем случае ограничение по загрузке было 2М по умолчанию, а мои файлы были 4М. Это привело к пустому массиву $ _FILES.
Других решений пока нет …