Белый экран смерти на php сайте по определенному запросу?

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

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

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

"Контакты" - это отношение модели "человек", а список - это то, что я должен отобразить. Если я опрошу людей с ключами "12345", "14256" и "23489", страница будет отображаться правильно. Но когда я запрашиваю конкретный "10012", он выдаст мне белый экран без ошибок и без стилевого формата. Просто пустой экран. И он также загружает действительно загружается дольше, чем другие запросы. Я попытался войти в систему и проверить в shared-data/runtime, но он даже не достигнет контроллера. Это просто происходит с этим конкретным человеком.

Что кажется наиболее вероятной причиной этого?

3 ответа

Решение

Основная проблема заключалась в том, что было слишком много данных в 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, который вызвал белую страницу, и я проверил журналы, он даже не достиг контроллера. И, кстати, идентификатор "10012" уже сам проверял базу данных.:)

Шаги:

1) Включите режим Yii DEBUG. 2) Включить все отчеты об ошибках на php.3) Включить Yii Profiling с помощью этого. и проверьте модель Person, прежде чем использовать ее, как показано ниже.

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

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

$model= Person::model()->findbyPk('12345');
if($model=== NULL)
{
throw new CHttpException('I am empty. Please try another key');
}
else
{
// whatever you wanna do
    }
Другие вопросы по тегам