这只是一条快速脚本,可以显示我称之为“心理日志文件”的消息。只是为了跟踪我的想法,当我离开并让自己回去工作。无论如何,它大部分时间都可以正常工作,但我经常会遇到分段错误。在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 Segmentation fault ali@oem-desktop:~$ mlog blah ali@oem-desktop:~$ mlog blah Segmentation fault ali@oem-desktop:~$ mlog blah ali@oem-desktop:~$ mlog blah ali@oem-desktop:~$ mlog blah Segmentation fault ali@oem-desktop:~$ mlog blah ali@oem-desktop:~$ mlog blah Segmentation fault ali@oem-desktop:~$ mlog blah Segmentation fault
知道我在这里做错了什么吗?即使在产生分段错误的运行上,该文件似乎也按预期正确更新。我正在运行Ubuntu 9.04 Jaunty。
ali@oem-desktop:~$ php --version PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli) (built: Apr 23 2009 14:37:14) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
提前致谢。
答案 0 :(得分:9)
尝试
strace mlog blah
并查看是否提供了一些线索,就像它在死时所做的那样。对于它的价值,我无法在你报告的相同php版本的64位Jaunty安装上重现它。
答案 1 :(得分:4)
你很可能有一个以某种方式混淆的扩展。如果扩展是为不同版本的php或外部库构建的,则会发生这种情况。尝试禁用php.ini中的所有扩展,看看它是否解决了问题。如果是,则重新启用每个分机,一次一个,直到找到罪犯。
答案 2 :(得分:3)
可能是因为这个bug影响了Ubuntu和Debian ...... https://bugs.launchpad.net/ubuntu/+source/php5/+bug/343870
答案 3 :(得分:2)
在php5-mysql中看起来像Ubuntu bug #343870。我不再使用PHP mysql和mysqli模块禁用分段错误。
答案 4 :(得分:1)
我已经看到了完全相同的东西,它通常只是PHP错误的指示器。
如果问题仍然存在,我会升级到最新版本..提交错误报告。 如果您坚持使用ubuntu版本,您可以在ubuntu的跟踪器中发布错误报告。
答案 5 :(得分:1)
尝试更改扩展程序的加载顺序。我不得不在curl之前移动pgsql来摆脱我遇到的段错误。我读完之后试过了:
http://linux.m2osw.com/php_cli_segmentation_fault_with_pgsql
答案 6 :(得分:0)
无法复制,毫不奇怪。在实验上,我尝试使用fopen()
而不是file_put_contents()
附加到该文件。
答案 7 :(得分:-1)
由于简单的堆栈溢出,我收到了此错误。为什么我没有得到除分段错误之外的其他错误是一个很好的问题,但是使用strace
和die()
我追踪了问题。
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 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
与SektionEins GmbH的Suhosin v0.9.32.1,Copyright(c)2007-2010
<?php
function Bar() {
return Bar();
}
Bar();
?>
php5 overflowtest.php
分段错误