【发布时间】:2015-07-20 14:34:35
【问题描述】:
我在 Linux 服务器上有一个 PHP 脚本,我正在通过命令行执行,如下所示:php script.php(请注意,它不是作为 Web 请求的一部分执行的)。
服务器“php.ini”文件中的memory_limit设置为“512M”,我已经验证如下:
# echo "<?php phpinfo(); ?>" | php | grep memory_limit
memory_limit => 512M => 512M
现在,问题是当我通过php script.php 执行有问题的脚本时,最终我收到以下错误:
致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 600283 字节)...
268435456 bytes ~= 268mb,肯定低于512mb
这里会发生什么?我是否可能缺少另一个系统级设置?还是 php 进程本质上限制在 ~ 268mb?
【问题讨论】:
-
你重启了apache吗?您是否检查过其他地方是否存在覆盖 .ini 副本的 memory_limit?在命令行检查是没有意义的,因为它通常使用与 sapi(又名基于 Web)不同的 .ini 文件集。您需要在遇到问题的脚本中检查
php_info()。 -
在脚本崩溃前转储memory_get_usage
-
另外,Suhosin 扩展可以设置自己的内存限制。你检查了吗?
-
您是否尝试过将内存限制直接传递给命令?
php -d memory_limit=512M script.php -
@MarcB 就像我在问题中提到的那样,我通过命令行执行脚本,而不是 apache(或任何其他 Web 服务器)。
标签: php