Не загружаются фотографии весом более 3х мегабайтов
16.09.2018 04:29:12 pm
Доброго времени суток. На сайте есть форма для загрузки фотографий, разрешено загружать фото размером до 5ти мегабайт. Те фотографии, что меньше 3х мегабайт загружаются без ошибок, быстро и легко, фото с весом более 3х мегабайт не загружаются в папку на сервере вообще, просто идет бесконечная загрузка и все. Я пробовал увеличивать лимит веса до 20 мегабайт, это не помогает, бесконечная загрузка так и остается. Не пойму в чем дело... Скрипт загрузки выполняет разные проверки и если бы дело было в весе фотографии, вышло бы сообщение: "Вес фотографии слишком большой. Пожалуйста, уменьшите размер до 5ти мегабайт.", но этого не происходит. Так же фотография полностью валидна, ни каких причин в ней нет, чтобы ее отвергнуть.
Подскажите, что может быть. Если надо, выложу код загрузчика или даже дам доступ к серверу.
Спасибо.
Подскажите, что может быть. Если надо, выложу код загрузчика или даже дам доступ к серверу.
Спасибо.
- Жалоба
16.09.2018 04:57:01 pm
Живой сказал:
Если надо, выложу код загрузчикаЖивой, если хочешь получить помощь, надо сразу, в своем первом сообщении, выкладывать свой нерабочий код. Видимо, здесь так принято, спросить что у меня не так, а где именно не показать. Хотя скорее всего код рабочий и ошибок в нем нет, раз фотографии все же загружаются, меньше 3х мегабайт.
Вангую, проблема в настройках сервера.
16.09.2018 05:21:12 pm
Живой, какое значение будет иметь переменная
Вместо
Объяснение сообщений об ошибках: http://php.net/manua ... load.errors.php.
$error
?:foreach ($_FILES['image']['error'] as $key => $error)
{
echo $error;
}
Вместо
image
напишите свое значение.Объяснение сообщений об ошибках: http://php.net/manua ... load.errors.php.
16.09.2018 07:18:07 pm
Живой, увеличивайте допустимый размер загружаемого файла в php.ini: Увеличить допустимый размер загружаемого файла на PHP. Видимо, у вас установлен предел три мегабайта.
UPLOAD_ERR_INI_SIZE
Значение: 1; Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.
UPLOAD_ERR_INI_SIZE
Значение: 1; Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.
18.09.2018 06:37:14 pm
Думается мне можно так:
На странице объяснения сообщений об ошибке (http://php.net/manua ... load.errors.php), в одном из комментариев, написан класс:
Пример использования:
foreach ($_FILES['image']['error'] as $key => $error)
{
if ($error == UPLOAD_ERR_OK)
{
// Ошибок не возникло, файл был успешно загружен на сервер.
}
else if ($error == UPLOAD_ERR_INI_SIZE)
{
// Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.
}
else if ($error == UPLOAD_ERR_FORM_SIZE)
{
// Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
}
else if ($error == UPLOAD_ERR_PARTIAL)
{
// Загружаемый файл был получен только частично.
}
else if ($error == UPLOAD_ERR_NO_FILE)
{
// Файл не был загружен.
}
else if ($error == UPLOAD_ERR_NO_TMP_DIR)
{
// Отсутствует временная папка. Добавлено в PHP 5.0.3.
}
else if ($error == UPLOAD_ERR_CANT_WRITE)
{
// Не удалось записать файл на диск. Добавлено в PHP 5.1.0.
}
else if ($error == UPLOAD_ERR_EXTENSION)
{
// PHP-расширение остановило загрузку файла. PHP не предоставляет способа определить, какое расширение остановило загрузку файла; в этом может помочь просмотр списка загруженных расширений с помощью phpinfo(). Добавлено в PHP 5.2.0.
}
}
На странице объяснения сообщений об ошибке (http://php.net/manua ... load.errors.php), в одном из комментариев, написан класс:
class UploadException extends Exception
{
public function __construct($code) {
$message = $this->codeToMessage($code);
parent::__construct($message, $code);
}
private function codeToMessage($code)
{
switch ($code) {
case UPLOAD_ERR_INI_SIZE:
$message = "The uploaded file exceeds the upload_max_filesize directive in php.ini";
break;
case UPLOAD_ERR_FORM_SIZE:
$message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
break;
case UPLOAD_ERR_PARTIAL:
$message = "The uploaded file was only partially uploaded";
break;
case UPLOAD_ERR_NO_FILE:
$message = "No file was uploaded";
break;
case UPLOAD_ERR_NO_TMP_DIR:
$message = "Missing a temporary folder";
break;
case UPLOAD_ERR_CANT_WRITE:
$message = "Failed to write file to disk";
break;
case UPLOAD_ERR_EXTENSION:
$message = "File upload stopped by extension";
break;
default:
$message = "Unknown upload error";
break;
}
return $message;
}
}
Пример использования:
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
// uploading successfully done
} else {
throw new UploadException($_FILES['file']['error']);
}