【问题标题】:PHP script execution exceeding memory limit, even though limit is higherPHP脚本执行超出内存限制,即使限制更高
【发布时间】: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


【解决方案1】:

您可以使用 php -i 并 grep 输出来检查您是否更新了正确的 php.ini,

php -i | grep php.ini

【讨论】:

  • 好吧,如果控制台说 memory_limit => 512M => 512M 那么使用 php.ini 就可以了
【解决方案2】:

很可能是 php.ini 设置没有生效。再次重新启动服务器,并使用 phpinfo() 运行脚本以确保您的更改到位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多