2014-01-09 64 views
0

嗨即时通讯经历我的PHP网站上的死亡白屏只发生给定的查询,我似乎无法找到任何错误。我试着看var/logs/apache2并寻找php错误日志,但没有。在某些查询的PHP网站上死亡的白屏?

我正在使用yii。我有一个列出过滤内容的页面。在我的控制,我有这样一个查询:

 $model= Person::model()->findbyPk('12345'); 
    $list = $model->contacts; 

“联系人”是“人”模型的关系,并且该列表是我应该显示。如果我用键'12345','14256和'23489'查询人,页面将正常显示。但是当我查询一个特定的'10012'时,它会给我一个没有错误并且没有样式格式的白色屏幕。只是一个空白的屏幕。而且它的加载时间确实比其他查询长。我试着记录它并检查共享数据/运行时间,但它甚至不会到达控制器。它恰好发生在这个特定的人身上。

什么似乎是最可能的原因呢?

+0

在您的数据库中是否有人员ID为10012的条目?如果数据库中没有匹配的行,你的'findbyPk()'方法会返回什么结果?也许你应该检查'$ model'来查看它是否是一个对象,然后对其进行解引用。 –

+0

你可以添加一些调试信息吗?也许正如[这里]所述(http://stackoverflow.com/questions/18177980/fatal-error-handling-in-yii)。尝试使用该特定ID设置一些单元测试,并查看那里报告的任何错误。 –

+0

在您的php应用程序之外运行该查询并查看它返回的内容。白色屏幕往往表明数据太多。 –

回答

0

的主要问题是存在于Person模型的关系contacts太多的数据。这种关系是一对多的。解决方案是使用其他方式/查询获取联系人。

我仍然无法确定的是为什么当我登录控制器时,我运行查询,它甚至不会到达控制器。即使日志是在查询运行之前,例如

function actionListContacts() { 
     Yii::log('Ireached this function'); 
     $request = Yii::app()->request; 
     $personId = $request->get('personId'); 

     $model = Person::model()->findByPk($personId); 
     // This is where the query for contacts should start.. 
     $contacts = $person->contacts; 

     $this->render(['contacts' => $contacts]); 
    } 

如果我使用id'12345',渲染是成功的,如果我检查日志,我可以看到我的日志。但是,当我使用10012,这导致了白页,我检查了日志,它甚至没有到达控制器。顺便说一下,id'10012'是现有的自己检查数据库。 :)

0

您需要检查您是否在$ model中获得结果。试试这个

$model= Person::model()->findbyPk('12345'); 
if($model=== NULL) 
{ 
throw new CHttpException('I am empty. Please try another key'); 
} 
else 
{ 
// whatever you wanna do 
    } 
0

步骤:

1)启用Yii的调试模式。 2)启用php的所有错误报告。3)在this的帮助下启用Yii分析。并在使用之前检查人员模型,如下所示。

$model= Person::model()->findbyPk('12345'); 
if($model === NULL) 
{ 
throw new CHttpException('There is no record with this key.'); 
} 
// Normal expected code . 
+0

对不起,但我确定钥匙不是空的。自己检查数据库。如果model是一个null,那么Yii会抛出一个错误'尝试获取非对象属性的属性',或者类似的东西。我以前经历过很多次。 –