【发布时间】:2011-10-30 21:40:53
【问题描述】:
我一直在为一个奇怪的问题而烦恼...据我所知,is_file() 在检查特定文件时导致了段错误:
if( is_file('/path/to/file.php') ){
exit 'ok';
}else{
exit 'err';
}
运行此代码会立即导致段错误,甚至在 PHP 可以将错误写入其错误日志之前......Apache 子进程被杀死。
我确认这是导致段错误的块,因为我在块之前放置了一个exit;,并且该代码可以正常访问。我还在该文件所在的目录上尝试了is_dir(),但这也是段错误:
if( is_dir('/path/to') ){
exit 'ok';
}else{
exit 'err';
}
有人知道是什么原因造成的吗?该文件存在于该位置,我可以使用我的用户帐户(这也是 Apache 运行的同一用户)查看/编辑它,所以我认为这不是权限问题。即使它与文件权限有关,我不应该在 PHP 日志中看到错误吗?
另外,请注意,我已经使用相同的 MAMP 设置大约一年了,没有任何问题(我的扩展也没有更改),因此我的设置不太可能出现问题。另外,我让另一位开发人员运行了这段代码,他在他的机器上看到了同样的问题。
非常感谢任何想法。
我们俩都在 Mac OSX 10.6.8 上发生了这种情况。 PHP 版本 5.3.1 和 5.3.2。
我的机器: MAMP - Apache/2.0.63 (Unix) PHP/5.3.2 DAV/2 mod_ssl/2.0.63 OpenSSL/0.9.7l
我同事的: XAMPP - Apache/2.2.14 (Unix) mod_python/3.3.1 Python/2.5.4 DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3。 1 mod_perl/2.0.4 Perl/v5.10.1
【问题讨论】:
-
很奇怪。可以添加操作系统、服务器和 PHP 信息吗?
-
我们俩都在 Mac OSX 10.6.8 上发生。 PHP 版本 5.3.1 和 5.3.2。
-
这是否仅通过 PHP 发生?你能直接从 PHP 外部读取这个文件吗?
-
Apache/2.0.63 (Unix) PHP/5.3.2 DAV/2 mod_ssl/2.0.63 OpenSSL/0.9.7l
-
PHP 中的 Segfault 是一个错误。阅读:bugs.php.net/bugs-generating-backtrace.php 并在 bugs.php.net 上提交错误。
标签: php apache segmentation-fault