PHP的ini每个目录指令取决于REQUEST_URI的(PHP ini directive per

2019-09-16 10:36发布

我试图改变上传大小限制。 我知道我必须要改变这些指令,在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)

我的问题,那么,如何避免这个问题? 我不想为整个应用程序设置这些值,只为一个具体行动。

Answer 1:

这是可能的,这取决于你如何映射到前端控制器上。 如果您是通过重写规则做,那么你可以使用<Location> ,而不是<Directory>块指定路径的一大块,你要更改设置。 <LocationMatch>允许您使用正则表达式同样的事情。

如果你所有的外部URL的真正开始/index.php? 然后考虑设立一个重定向规则尤其是对这些请求:

RewriteEngine on
RewriteRule ^foo/$ ^/index.php [L]

<Location /foo/>
    php_value ...
</Location>

如果不是的话,你需要告诉我们更多关于您的应用程序结构。



Answer 2:

一个可能的解决方法是内实现你的行动,并有提出,文件中使用“自定义” URL的POST目标的脚本来创建一个PHP文件的目录。 处理输入后,你将通过回重定向到一个正常的网页index.php 。 这是不干净的,但它应该工作。

它也可能是值得考虑的正是你站在离这得到什么。

  • 它没有任何意义,设置session.gc_maxlifetime在短短的一个动作(尤其是如果你正在增加它)
  • 限制max_input_time为一个小时也没有意义,如果max_execution_time也1小时
  • max_execution_time可以在运行时设置
  • 其他两个指令不能在运行时设置,但POST的大小并不重要,并上传的文件大小可以在运行时进行检查和相应的处理

所以,这里有什么目的?



文章来源: PHP ini directive per directory depending of request_uri