我有一台服务器,其中 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
答案1
阿利路亚。提出问题能帮助我找到问题所在。
通过将 suhosin.memory_limit 设置为 1024(2048 用于使用边缘值进行测试),它运行,并且我的脚本告诉我
256M
512M
1024M
end
同样的问 https://stackoverflow.com/questions/9276212/php-settings-memory-limits-1024m-does-not-work/16854780#16854780 (顺便说一下,是同一台服务器)