我已经运行了通过aptitude安装的带有标准Apache和PHP的Debian Squeeze。

不,我尝试运行:

<?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

亲切的问候

最佳答案

suhosin扩展阻止memory_limit的更改。

来自位于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。

10-02 14:15