Код:
<?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-> существует;
Обратите внимание, что это непроверенный пример, это полный код, который вызывает ошибку. Я знаю, что код действителен, но он не работает в двух средах.
Я действительно не знаю, почему! Один сервер работает PHP 5.3.3 (fedora), другой PHP 5.3.2 (ubuntu). Я также попытался перезагрузить серверы. Они ничего не разделяют, хотя они находятся в одной сети.
У кого-нибудь есть советы по отладке?
Поскольку люди до этого заявили, что код выглядит хорошо и не должен вызывать ошибок.
Поэтому я думаю, что это связано с ошибкой самого процессора php:
Как вы установили PHP?
Как вы настроили PHP?
У вас есть (дополнительные) сообщения об ошибках в вашем HTTP-Daemon-Log?
В вашем тестовом коде нет ничего плохого. Он работает без проблем на PHP 5.3.3. Вероятно, вы потеряли причину проблемы при преобразовании своего «реального» кода в тестовый код для публикации здесь.
Код работает как есть, но я никогда не видел объект, созданный без парнеров.
$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; }