当memory_limit设置为-1时,PHP如何引发“内存限制耗尽”?

最近,我从命令行执行一个PHP脚本时收到一条错误消息:

PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 40961 bytes) 

php -i | grep memory php -i | grep memory显示:

 memory_limit => -1 => -1 suhosin.memory_limit => 0 => 0 

哪一个应该没有限制呢?

服务器运行PHP 5.3.3-7+squeeze16 with Suhosin-Patch (v0.9.32.1) (cli)

怎么会这样?

使PHP没有任何限制是不明智的。当你的服务器是32GB的内存,最大为30GB,等等。尝试设置一个正值,而不是-10

确保你的目标是正确的PHP / php.ini版本,具体取决于你运行脚本的模式:

/etc/php5/apache for apache

/etc/php5/fpm for fastcgi using mod_fpm

/etc/php5/cgi for cgi脚本

/etc/php5/cli为php shell客户端

要对更改生效,还需要重新启动:

/etc/init.d/apache

要么

/etc/init.d/php5-fpm

如果还没有帮助,请检查以下问题: 无法删除PHP脚本的内存使用限制

好吧,我发现它,问题不是PHPconfiguration,但运行全局search后,我发现一个供应商脚本,将内存限制设置为32M: – /