我有一个 Web 应用程序,它将对虚拟主机的所有请求重定向到控制器,然后控制器根据 URL 决定要包含和运行哪些文件。有一个通过 POST 接受大型 XML 文件的 Web 服务。我需要应用程序的 memory_limit 和 post_max_ 约为 32M,但接受 XML 的服务除外,这需要它们的限制接近 1024M。 ini_set('memory_limit','1024M')
在脚本中工作,但不适用于 post_max_size。
我似乎无法弄清楚该怎么做。我正在尝试类似的事情:
<VirtualHost *:80>
ServerName test.com
DocumentRoot /var/www/test.com/html
php_admin_value include_path .:/var/www/test.com/includes:/var/www/test.com/includes/libs
php_value session.use_only_cookie 1
<Location />
php_value memory_limit 32M
php_value post_max_size 30M
php_value upload_max_filesize 29M
</Location>
<Location /services/big-service>
php_value memory_limit 1024M
php_value post_max_size 128M
</Location>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteCond %{REQUEST_URI} !^/(.*)(html|gif|jpg|png|ico|css|js|dtd|swf|flv|xml)$
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^/(.*)$ /Controller.php/$1 [PT]
</VirtualHost>
所以,通过上面的配置,如果 Controller.php 看起来像
<?php
echo '<pre>';
var_dump(ini_get('memory_limit'));
var_dump(ini_get('post_max_size'));
var_dump(ini_get('upload_max_filesize'));
我会收到 string(3) "32M" string(3) "30M" string(3) "29M"
如果我访问http://test.com和http://test.com/services/big-service,但我希望看到后面 URL 的更高限制。
是否有人对此有任何不通过 URL 直接使用和访问服务脚本的解决方案?