PHP 5.3.3 中的 ini_set(“memory_limit”) 根本不起作用

2022-08-30 10:44:16

我以前有这个工作:

echo ini_get("memory_limit")."\n";
ini_set("memory_limit","256M");
echo ini_get("memory_limit")."\n";

这将输入以下内容:

32M
256M

在由命令行执行的 php 脚本上。我从5.2更新到5.3,从现在开始,这个指令根本不起作用:这给了我:

32M
32M

然后使我的脚本失败并出现致命错误...

我检查了php文档,并用谷歌搜索了它,我没有找到“memory_limit”已被弃用的地方。

有人有解决方案吗?


答案 1

最有可能的是,您的 sushosin 已更新,这会将suhosin.memory_limit的默认值从禁用更改为 0(这将不允许对memory_limit进行任何更新)。

在 Debian 上,更改 /etc/php5/conf.d/suhosin.ini

;suhosin.memory_limit = 0

suhosin.memory_limit = 2G

或者您喜欢的任何价值。你可以在 http://www.hardened-php.net/hphp/changelog.html 找到Sushosin的更新日志,上面写着:

更改了memory_limit保护的实施方式


答案 2

如果您启用了 suhosin 扩展,它可以防止脚本设置的内存限制超过其开始时的内存限制或某些定义的上限。

http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit


推荐