4

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

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

4

2 回答 2

2

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

如果您的所有外部 URL 都真正开始,请/index.php?考虑为这些请求设置重定向规则:

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

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

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

于 2012-04-09T08:28:35.810 回答
1

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

同样值得考虑的是,您究竟能从中获得什么。

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

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

于 2012-04-09T08:26:51.297 回答