У меня возникает странная проблема при загрузке больших файлов через PHP (через Drupal, хотя это не проблема).
В основном, мои загрузки файлов не выполняются из-за того, что достигнуты пределы post_max_size, хотя локальная директива установлена в 96M, а файл – 25M.
Я гарантировал, что все остальное верно, включая max_input_time
, max_upload_filesize
и время простоя IIS FastCGI. Все это много, и не проблема.
Я переопределяю директиву post_max_size
через Plesk, который (я считаю) сохраняет изменение в значении реестра. Запуск phpinfo () в домене показывает правильные локальные и основные значения для всех директив … 96M local, 12M master.
Очень странно, что когда я изменяю мастер post_max_size
в php.ini с 12M до 96M (и убедитесь, что изменение вступило в силу), оно работает нормально! Изменение главного значения на 12M (и сохранение локального значения 96M) немедленно приводит к сбою повторной загрузки.
Это ошибка в PHP, или я делаю это неправильно?
Как оказалось, в Windows вы можете устанавливать только директивы ini, помеченные как PHP_INI_USER
каждого каталога. К сожалению, upload_max_filesize
и post_max_size
являются как PHP_INI_PERDIR
. Из документов PHP по адресу http://php.net/manual/en/configuration.changes.php
Настройки для каталога будут активны для любого скрипта, запущенного из этого каталога или любого его подкаталога. Значения под ключ должны иметь имя директивы конфигурации PHP и значения строки. Константы PHP в значениях не анализируются. Однако только значения конфигурации, изменяемые в PHP_INI_USER, могут быть установлены таким образом, значения PHP_INI_PERDIR не могут.
Таким образом, даже если Plesk имеет интерфейс для изменения этих директив, и даже несмотря на то, что phpinfo()
набирает их, они ничего не делают, чтобы изменить фактические максимальные размеры загрузки. Plesk не должен позволять вам изменять их в Windows, а phpinfo()
не должен сообщать об изменениях, но что вы можете сделать.
Проверьте PHP post_max_size и upload_max_filesize в php.ini и для любых переопределений (например, local php.ini или .htaccess)
EDIT: следует отметить, что на phpinfo () нельзя полагаться на определение того, будет ли доступно какое-либо переопределение во время запроса (например, когда происходит загрузка файла), так как оно будет обработано во время ответа.
У меня были подобные проблемы в Плеске. Вы редактировали какой-либо из шаблонов в Plesk? Я знаю, когда он запускает свои задания cron, вы можете потерять определенные настройки конфигурации, если вы не сделали их через Plesk.
Но как насчет вашего файла .htaccess? Вы также можете установить эти ограничения там, и на основе вашей конфигурации Plesk может быть лучше сделать эти изменения.