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.