我有一个PHP memory_limit是256M的服务器。 一些脚本需要更多的内存,并执行ini_set('memory_limit','256M'); 但是因为Suhosin被安装并激活,所以我在日志文件中find了这个
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)
但是suhosinconfiguration有
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
哈利路亚。 问一个问题帮我find问题。
通过将suhosin.memory_limit设置为1024(2048用于边缘值testing),它运行,我的脚本告诉我
256M 512M 1024M end
同样的问题,因为https://stackoverflow.com/questions/9276212/php-settings-memory-limits-1024m-does-not-work/16854780#16854780 (同样的服务器,顺便说一句)