我使用标准Apache和PHP运行Debian Squeeze,通过aptitude安装。
不,我试着跑:
<?php
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","1024M");
echo ini_get("memory_limit")."\n";
?>
结果:128M 128M
我试图改变这种行为和一些事实:
/etc/php5/apache2/php.ini:
safe_mode = Off
memory_limit = 128M
/etc/php5/apache2/conf.d/suhosin.ini:
[suhosin]
suhosin.memory_limit = 2048M
我可以在service apache2 restart
之后使用phpinfo();验证此设置。
为什么我无法将内存限制设置为高于128M?
注意:
<?php
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","127M");
echo ini_get("memory_limit")."\n";
?>
结果:128M 127M
亲切的问候
答案 0 :(得分:2)
更改memory_limit
被suhosin扩展程序阻止。
来自http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit
的文档suhosin.memory_limit
类型:整数 默认值:0 因为很长的脚本没有运行 safe_mode他们可以自由地将memory_limit更改为任何值 他们要。 Suhosin改变了这个事实并且不允许设置 memory_limit的值大于脚本开头的值, 当此选项保留为0.大于0的值表示 Suhosin将禁止脚本将memory_limit设置为值 高于此配置的硬限制。例如,如果您有用,这是有用的 想要以16M的限制运行脚本,但是图像 处理脚本可能会将其提升到20M。
因此,启用了suhosin扩展,您需要更改它并重新启动apache。