6

这只是我称之为“心理日志文件”的消息的快速脚本。只是为了在我迷失方向并让自己重新开始工作时跟踪我的想法。无论如何,它在大多数情况下都可以正常工作,但每隔一段时间我就会遇到分段错误。在 C 中听说过它们,但以前从未在 PHP 中使用过它们。这是脚本:

#!/usr/bin/php 
<?php 

    $mental_log_file = "/home/ali/mental-log"; 
    array_shift($argv);      //get rid of the initial arg (name of the command) 
    $log_entry = date('j-n-y H:i') . ' ' . implode(' ', $argv) . "\n";

    file_put_contents($mental_log_file, $log_entry, FILE_APPEND);

这是我在几次运行中得到的:

ali@oem-desktop:~$ mlog blah
ali@oem-desktop:~$ mlog blah
分段故障
ali@oem-desktop:~$ mlog blah
ali@oem-desktop:~$ mlog blah
分段故障
ali@oem-desktop:~$ mlog blah
ali@oem-desktop:~$ mlog blah
ali@oem-desktop:~$ mlog blah
分段故障
ali@oem-desktop:~$ mlog blah
ali@oem-desktop:~$ mlog blah
分段故障
ali@oem-desktop:~$ mlog blah
分段故障

知道我在这里可能做错了什么吗?即使在产生分段错误的运行中,该文件似乎也按预期正确更新。我正在运行 Ubuntu 9.04 Jaunty。

ali@oem-desktop:~$ php --version
PHP 5.2.6-3ubuntu4.1 和 Suhosin-Patch 0.9.6.2 (cli) (build: Apr 23 2009 14:37:14)
版权所有 (c) 1997-2008 PHP 集团
Zend Engine v2.2.0,版权所有 (c) 1998-2008 Zend Technologies

提前致谢。

4

8 回答 8

9

尝试

strace mlog blah

看看这是否能提供一些线索,说明它死后在做什么。对于它的价值,我无法在 64 位 Jaunty 安装上使用您报告的相同 php 构建来重现它。

于 2009-07-09T20:13:41.413 回答
4

您很可能有一个扩展程序以某种方式搞砸了。如果扩展是为不同版本的 php 或外部库构建的,则可能会发生这种情况。尝试禁用 php.ini 中的所有扩展,看看是否能解决问题。如果是这样,则重新启用每个扩展程序,一次一个,直到找到违规者。

于 2009-07-09T22:54:06.423 回答
3

这可能是因为这个影响 Ubuntu 和 Debian 的错误... https://bugs.launchpad.net/ubuntu/+source/php5/+bug/343870

于 2009-09-07T11:29:12.573 回答
2

看起来像php5-mysql 中的Ubuntu 错误 #343870。禁用 PHP mysql 和 mysqli 模块后,我不再遇到分段错误。

于 2009-07-20T14:56:49.273 回答
1

尝试更改扩展的加载顺序。我不得不在 curl 之前移动 pgsql 以摆脱我遇到的段错误。读完后我试了一下:

http://linux.m2osw.com/php_cli_segmentation_fault_with_pgsql

于 2010-12-02T15:10:40.317 回答
1

我见过完全相同的事情,它通常只是 PHP 错误的指标。

如果问题仍然存在,我会升级到最新版本.. 提交错误报告。如果您坚持使用 ubuntu 版本,则可以改为在 ubuntu 的跟踪器中发布错误报告。

于 2009-07-10T00:30:18.707 回答
0

无法复制,不足为奇。fopen()在实验上,我会尝试使用而不是附加到文件中file_put_contents()

于 2009-07-09T20:18:34.600 回答
-1

由于简单的堆栈溢出,我得到了这个错误。为什么我没有得到比分段错误更多的错误是一个很好的问题,但是我使用stracedie()追踪了问题。

服务器

Debian 6.0(挤压)

Linux domain.com 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux

PHP

PHP 5.3.3-7+squeeze14 与 Suhosin-Patch (cli)(构建:2012 年 8 月 6 日 14:18:06)

版权所有 (c) 1997-2009 PHP 集团

Zend Engine v2.3.0,版权所有 (c) 1998-2010 Zend Technologies

使用 Suhosin v0.9.32.1,版权所有 (c) 2007-2010,SektionEins GmbH

重现问题的代码

<?php   
    function Bar() {
        return Bar();
    }
    Bar();
?>

输出

php5溢出测试.php

分段故障

Strace 输出(以防任何人都可以使用它):

粘贴链接

于 2013-02-28T14:20:30.097 回答