我有一個web應用程序,將所有請求重定向到虛擬主機,然後根據URL決定哪些文件包含並運行。有一個Web服務通過POST接受大型XML文件。除了接受XML的服務外,我需要memory_limit和post_max_爲應用程序大約32M,這將需要它們的限制接近1024M。 ini_set('memory_limit','1024M')
在腳本內工作,但不適用於post_max_size。如何設置更高的memory_limit,post_max_size和Apache/PHP中的特定腳本?
我似乎無法弄清楚如何去做。我試圖與此類似:
<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'));
我會收到 串(3) 「32M」 字符串( 3)「30M」 串(3)「29M」
如果我訪問http://test.com和http://test.com/services/big-service,但我想看看爲後來的URL較高的限制。
有沒有人有任何解決方案,這不會訴諸直接通過URL使用和訪問服務腳本?
是的,擁有大於memory_limit的post_max_size是一個問題,因爲當大帖子出現時它會致命(內存耗盡)。 – tandoan 2011-05-23 21:27:12