2014-01-09 5 views
0

Привет, я испытываю белый экран смерти на моем сайте php, который возникает только при определенном запросе, и я не могу найти никаких ошибок. Я попытался посмотреть var/logs/apache2 и искал журнал ошибок php, и его не было.Белый экран смерти на сайте php для определенного запроса?

Я использую yii. У меня есть страница с списком фильтрованных содержимого. В мой контроллер, у меня есть, как запрос:

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

В «контакты» представляет собой отношение модели «человек», и список того, что я должен показать. Если я обращаюсь к людям с ключами «12345», «14256» и «23489», страница будет отображаться правильно. Но когда я запрашиваю конкретный «10012», он даст мне белый экран без ошибок и без стиля. Просто пустой экран. И он также загружает нагрузку дольше, чем другие запросы. Я попытался выполнить его регистрацию и проверить общие данные/время выполнения, но он даже не достигнет контроллера. Это просто происходит для этого определенного Человека.

Что, по-видимому, является наиболее вероятной причиной этого?

+0

Есть запись в вашей базе данных с идентификатором пользователя 10012? Что возвращает ваш метод 'findbyPk()', если в базе данных нет соответствующей строки? Возможно, вы должны проверить '$ model', чтобы увидеть, если это объект, прежде чем вы его разыщите. –

+0

Можете ли вы добавить информацию об отладке? возможно, как описано [здесь] (http://stackoverflow.com/questions/18177980/fatal-error-handling-in-yii). Попытайтесь установить какой-либо модульный тест с использованием этого конкретного идентификатора и увидеть любые сообщения об ошибках. –

+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]); 
    } 

Если я использую идентификатор «12345», делают успешным, и если я проверить журналы, я могу видеть мой журнал. Но когда я использую 10012, что вызвало белую страницу, и я проверил журналы, он даже не дошел до контроллера. И, кстати, id '10012' уже проверял базу данных. :)

0

Вам нужно проверить, получаете ли вы результат в своей модели $ или нет. Попробуйте это

$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) Включить режим DEBUG Yii. 2) Включить все отчеты об ошибках на php.3) Включить профилирование Yii с помощью this. и проверьте модель Person перед использованием, как показано ниже.

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

Извините, но я был уверен, что ключ не пуст. Проверял базу данных самостоятельно. Если модель была нулевой, я уверен, что Yii выдаст ошибку «Попытка получить атрибут свойства, отличного от объекта», или что-то в этом роде. HAve испытал это много раз. –