【问题标题】:Segmentation Fault when running PHP Cli运行 PHP Cli 时出现分段错误
【发布时间】:2011-07-06 17:10:32
【问题描述】:

当我在 shell (Linux) 中键入时:

php index.php

有时 PHP 脚本终止,我收到一条错误消息:

分段错误

有时它工作正常,有时我得到一个错误

在 php 脚本中,它包括 PDO (mysql)、Curl、一些循环和“Simple HTML Dom”库

PHP 版本:

username [~/www/]# php -v
PHP 5.2.9 (cli) (built: Oct  9 2010 02:01:46)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd., and
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technolog

如何解决这个问题?我在 Windows 7 (PHP 5.3.0) 上测试时没有问题。

【问题讨论】:

  • 如果没有附加脚本将很难弄清楚。我会尝试获得一个可以重现问题的最小脚本(结合 pdo/curl 等)并在此处发布。另一个选项是在运行命令时执行 strace(查找 man strace 以获取选项)。b
  • 我会先从扩展列表中删除 ionCube,然后再试一次。如果它仍然失败,我也会删除 Zend Optimizer。然后如果仍然失败,我认为 rajasaur 的建议是了解更多信息的好方法。或者,run the script in GDB.

标签: linux segmentation-fault php php-5.2


【解决方案1】:

这是关于内存访问冲突。在您的情况下,此错误可能是由于(非详尽列表):

  1. a stack overflow(通常在给定函数的递归级别太高时发生)

  2. 太多数据无法放入变量中(例如,您尝试将大文件的全部内容放入变量中)

要了解导致脚本出现问题的原因,请尝试注释越来越大的部分,看看哪一个是错误的根源。

【讨论】:

    【解决方案2】:

    看来你的问题已经解决了:PHP Out of Memory - Crashes Apache? 可能问题在于 Simple HTML Dom 的内存泄漏:http://simplehtmldom.sourceforge.net/manual_faq.htm#memory_leak

    【讨论】:

    • 分段错误与 OOM 错误不同。请参阅 Mathieu Rodic 的回复。
    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2016-08-06
    • 2023-04-03
    相关资源
    最近更新 更多