Белый экран смерти на 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
}