PHP, Zend Framework: Как установить максимальный размер загружаемого файла?

Я устанавливаю максимальный размер файла для загрузки в моей форме:

$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
    ->setRequired(true)
    ->addValidator('NotEmpty')
    ->addValidator('Count', false, 1)
    ->addValidator('Size', false, 10485760) //10MB = 10,485,760 bytes
    ->setMaxFileSize(10485760)
    ->setDestination(APPLICATION_UPLOADS_DIR);
$this->addElement($file);

Но я получаю это сообщение об ошибке в моем приложении Zend Framework:

Notice: Your 'upload_max_filesize' config setting limits the maximum filesize to '2097152'. You tried to set '10485760' in /location/to/Zend/Form/Element/File.php on line 620

Что я делаю неправильно?

4 ответа

Решение

upload_max_filesize является опцией в конфигурации самого PHP и не зависит от Zend Framework.

Если вам нужно изменить максимальный размер загрузки, вы должны установить его в своем php.ini файл - обратите внимание, что вам, безусловно, придется изменить post_max_size,

Я знаю, что это было задано некоторое время назад, но ответ по-прежнему актуален, и на самом деле не в этом сообщении.

Оригинальный постер отметил:

Notice: Your 'upload_max_filesize' config setting limits the maximum filesize to '2097152'. You tried to set '10485760' in /location/to/Zend/Form/Element/File.php on line 620

и в следующем примечании:

Я не смог заставить это работать: ini_set('post_max_size', 10485760)

Технически метод класса setMaxFileSize() делает то же самое, что и ini_set.

То, что в значительной степени недокументировано, но здесь применимо, так это то, что вы можете изменять это значение так, как вам нужно, но не превышающее значение в php.ini, которое читается при запуске.

Например, *nix значение по умолчанию - 2M. Если вы не изменили php.ini, вы сможете перезаписать это значение только числом от 0 до 2097152.

Последнее замечание Как упоминалось в посте Паскаля МАРТИНА, упоминается, что upload_max_filesize и post_max_size идут рука об руку. Еще нужно учесть, что если вы сделаете эти значения несколько большим числом, вам, вероятно, следует убедиться, что значение memory_limit также учитывается, поскольку ваш скрипт потерпит неудачу из-за исчерпания памяти.

По умолчанию upload_max_filesize составляет 2 МБ в настройках php, что не зависит от максимального размера файла в вашем методе загрузки. Вы можете увеличить upload_max_filesize в файле php.ini.

Или Вы также можете изменить его в файле .htaccess вашего проекта таким образом, чтобы изменения были только для этого проекта. Например:-

php_value upload_max_filesize 20M
php_value post_max_size 25M
php_value memory_limit 100M

Но оставьте post_max_size больше, чем upload_max_filesize, а memory_limit должно быть больше, чем post_max_size.

Вы перезаписали максимальный размер по умолчанию в php.ini?

Другие вопросы по тегам