Я пытаюсь изменить ограничение размера загрузки. Я знаю, что мне нужно изменить эту директиву в конфигурации Apache (некоторые из них не могут быть изменены с помощью ini_set)
php_value session.gc_maxlifetime 3600 php_value max_input_time 3600 php_value max_execution_time 3600 php_value upload_max_filesize 10M php_value post_max_size 110M
К сожалению, я не могу сделать это непосредственно в <Directory>
моего виртуального хоста, поскольку каталог всегда один и тот же (я использую фронт-контроллер, таким образом, все запросы проходят через index.php и отправляются на правильный контроллер – Я использую Symfony)
Поэтому мой вопрос: как я могу избежать этой проблемы? Я не хочу устанавливать эти значения для всего приложения, только для определенного действия.
Это возможно, в зависимости от того, как вы ориентируетесь на ваш передний контроллер. Если вы делаете это с помощью правил перезаписи, вы можете использовать блок <Location>
вместо <Directory>
чтобы указать кусок пути, для которого вы хотите изменить настройки. <LocationMatch>
позволяет вам использовать регулярное выражение для одной и той же вещи.
Если все внешние URL-адреса действительно начинаются с /index.php?
затем подумайте над настройкой правила перенаправления, особенно для этих запросов:
RewriteEngine on RewriteRule ^foo/$ ^/index.php [L] <Location /foo/> php_value ... </Location>
Если это не так, вам нужно больше рассказать о структуре вашего приложения.
Возможным обходным решением было бы создать каталог с одним файлом PHP, внутри которого будет выполняться ваше действие, и иметь скрипт, который отправляет целевой объект POST в этот файл с использованием «настраиваемого» URL-адреса. После обработки ввода вы перенаправляете обратно на обычную страницу через index.php
. Это не чисто, но это должно сработать.
Можно также подумать над тем, что именно вы выиграете от этого.
session.gc_maxlifetime
всего за одно действие (особенно если вы его увеличиваете) max_input_time
до одного часа также не имеет смысла, если max_execution_time
также составляет один час max_execution_time
можно установить во время выполнения Итак, какова цель здесь?