最近,我从命令行执行 PHP 脚本时收到一条错误消息:
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted
(tried to allocate 40961 bytes)
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)
怎么会这样?
答案1
让 PHP 完全没有限制并不是明智之举。当您的服务器有 32GB 内存时,最多可设 30GB 等等。尝试设置一个正值而不是-1
或0
。
确保您瞄准正确版本的 PHP/php.ini,根据您运行脚本的模式,有:
/etc/php5/apache
对于 Apache
/etc/php5/fpm
对于 fastcgi 使用 mod_fpm
/etc/php5/cgi
对于 CGI 脚本
/etc/php5/cli
对于 php shell 客户端
为了使更改生效,您还需要重新启动:
/etc/init.d/apache
或者
/etc/init.d/php5-fpm
如果还没有任何帮助,请检查这个问题:无法删除 PHP 脚本的内存使用限制
答案2
好的,我找到了,问题不在于 PHP 配置,但在运行全局搜索后,我发现一个供应商脚本将内存限制设置为 32M :-/