1

我在一台特定的机器上遇到了 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 个小时!

4

0 回答 0