我在一台特定的机器上遇到了 PHP 段错误,我已经测试了 3 台其他机器并且似乎一切正常,但这个错误似乎与 PHP 密切相关,我想在这里分享它。
我的脚本(虽然要复杂得多)是这样的。
WP_Query->post // StdClass
// some stuff happens
// Try to access WP_Query->post here causes a segfault
get_userdate( 3 );
// WP_Query->post is now inexplicably populated with a WP_User object,
// though get_userdata does not reference it in any way
“发生了一些事情”实际上是一个明显不相关的函数调用,它遵循这种模式
function a() {
// WP_Query->post is correct
// function body
// WP_Query->post is correct
return true;
}
// WP_Query->post is correct
a();
// accessing WP_Query->post causes a segfault
就像垃圾收集以某种方式删除了对象的内存一样,尽管我尝试调用“gc_disable()”,但这并没有解决任何问题。
PHP 版本:带有 Suhosin-Patch (cli) 的 PHP 5.3.6-13ubuntu3.9(内置:2012 年 9 月 12 日 19:00:27) FPM:PHP 5.3.6-13ubuntu3.9 (fpm-fcgi)(内置:9 月 12 日2012 19:04:27)
我尝试禁用 PHP 扩展(memcached、apc)无济于事。
我尝试了 gdb 回溯,zend_std_read_property (object=0x1)
虽然我无法真正获得更多信息,但似乎出现了错误,我认为是因为 PHP 不是用“调试”编译的。
这里的任何建议都会非常受欢迎,到目前为止,我已经为此苦恼了大约 12 个小时!