Директива PHP ini для каждого каталога в зависимости от request_uri

Я пытаюсь изменить ограничение размера загрузки. Я знаю, что мне нужно изменить эту директиву в конфигурации 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 можно установить во время выполнения
  • другие две директивы не могут быть установлены во время выполнения, но размер POST не должен иметь значения, и размер загруженного файла можно проверить во время выполнения и обработать соответственно

Итак, какова цель здесь?