代码:
<?php
class My_Test{
public $exists = 'yah';
public function test(){
return $this->exists;
}
}
$test = new My_Test;
echo $test->test();
在两台服务器上间歇性地产生以下错误(平均每隔一次页面请求):
( ! ) Notice: Trying to get property of non-object in test.php on line 8
Call Stack
# Time Memory Function Location
1 0.0003 636392 {main}( ) ../test.php:0
2 0.0003 636840 My_Test->test( ) ../test.php:14
第10行是'return $ this-&gt; exists;
请注意,这不是一个未经测试的示例,它是产生错误的完整代码。我知道代码是有效的,但它在两个环境中都不起作用。
我真的不确定为什么!一台服务器运行PHP 5.3.3(fedora),另一台运行PHP 5.3.2(ubuntu)。我也试过重启服务器。他们没有任何共享,尽管他们在同一个网络上。
有人有任何调试技巧吗?
答案 0 :(得分:3)
您的测试代码没有任何问题。它在PHP 5.3.3上运行没有问题。在将“真实”代码转换为测试代码并在此处发布时,您可能已经失去了问题的原因。
答案 1 :(得分:1)
正如之前所说,代码看起来很好,不应该导致任何错误。
因此我猜它与php引擎本身的错误有关:
你是如何安装PHP的?
您是如何配置PHP的?
您的HTTP-Daemon-Log中是否有(附加)错误消息?
答案 2 :(得分:0)
代码似乎按原样运行,但我从未见过没有parens实例化的对象。
$test = new My_Test;
// Should be
$test = new My_Test();
您还可以实施一些日志记录:
public function test()
{
// Can edit this to use instanceof or getclass for further testing
if (!is_object($this)) {
error_log(serialize($this));
}
return $this->exists;
}