【问题标题】:PHP ini directive per directory depending of request_uri每个目录的 PHP ini 指令取决于 request_uri
【发布时间】:2012-04-21 16:06:31
【问题描述】:

我正在尝试更改上传的大小限制。我知道我必须在 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)

那么,我的问题是如何避免这个问题?我不想为整个应用程序设置这些值,只为特定操作设置。

【问题讨论】:

  • 我刚刚更新了我的问题

标签: php apache symfony1 apache2


【解决方案1】:

这是可能的,具体取决于您映射到前端控制器的方式。如果您通过重写规则执行此操作,则可以使用 <Location> 而不是 <Directory> 块来指定要更改设置的路径块。 <LocationMatch> 让你可以使用正则表达式来做同样的事情。

如果您的所有外部 URL 都确实以 /index.php? 开头,那么请考虑为这些请求设置重定向规则:

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

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

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

【讨论】:

  • 您是否设法在LocationLocationMatch 指令中设置了一个php_value?我正在使用 Apache 2.4,它不会让我这样做。它什么也没做。谢谢
【解决方案2】:

一种可能的解决方法是创建一个目录,其中包含一个实现您的操作的 PHP 文件,并使用“自定义”URL 提交 POST 目标该文件的脚本。处理完输入后,您将通过index.php 重定向回正常页面。它不干净,但它应该可以工作。

还值得考虑一下你究竟能从中获得什么。

  • 仅在 一个 操作中设置 session.gc_maxlifetime 没有任何意义(特别是如果您正在增加它)
  • 如果 max_execution_time 也是一小时,那么将 max_input_time 限制为一小时也没有意义
  • max_execution_time 可以在运行时设置
  • 其他两个指令无法在运行时设置,但 POST 大小应该无关紧要,上传的文件大小可以在运行时检查并相应处理

那么,这里的目的是什么?

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多