我有一个 PHP memory_limit 为 256M 的服务器。一些脚本需要更多内存并执行 ini_set('memory_limit', '256M'); 但由于 Suhosin 已安装并激活,我在日志文件中找到了这个
Sep 17 14:06:42 www-01 suhosin[28934]: ALERT - script tried to increase memory_limit to 536870912 bytes which is above the allowed value (attacker '127.0.0.1', file '/xxx/generate_docs.php', line 45)
但是 suhosin 配置了
suhosin.memory_limit = 2048M
PHP memory_limit 和 suhosin.memory_limit 值都由 phpinfo() 确认。为什么 PHP 不能通过此设置请求更多内存?
该脚本对于 256M 以下的任何内存限制值都可以正常运行,但是对于更高的值,我得到了错误并且 memory_limit 不会改变。
<?php
echo ini_get('memory_limit') . "<br>";
ini_set('memory_limit', '512M');
echo ini_get('memory_limit') . "<br>";
echo ini_get('suhosin.memory_limit') . "<br>";
echo "end<br>";
输出是
256M
256M
2048M
end
哈利路亚。问一个问题可以帮助我找到问题。
通过将 suhosin.memory_limit 设置为 1024(2048 用于测试边缘值),它运行,我的脚本告诉我
与https://stackoverflow.com/questions/9276212/php-settings-memory-limits-1024m-does-not-work/16854780#16854780相同的问题 (顺便说一下,同一台服务器)