Белый экран в обучающем компоненте.

Фотобитвы icms 2.1.1

#1 3 сентября 2014 в 14:15
Здравствуйте друзья.
Учусь писать компоненты, смотрел видео урок по написанию фотобитвы.

В 3 видео возникла проблема, при добавлении последнего участника битвы… белый экран. =( соответственно сообщение в ЛС админу что битва перешла на статус модерации тоже не приходит.
Может быть кто то учился и тоже сталкивался с этой проблемой? Как побороли подскажите пожалуйста.

___________
Версия cms 2.1.1
#2 3 сентября 2014 в 16:04
Смотрел, но не повторял действия. Взгляните исходники.
#3 3 сентября 2014 в 16:33


Смотрел, но не повторял действия. Взгляните исходники.

Aryuts

Смотрел исходники. Всё одинаково. Для верности залил исходники вместо того что писал. Результат тот же.
#4 3 сентября 2014 в 16:49
По возможности взгляну. Может разработчики подскажут.

P.S. Загляните в блог разработчика. Там вроде обсуждались ошибки.
#5 3 сентября 2014 в 17:26


По возможности взгляну. Может разработчики подскажут.

P.S. Загляните в блог разработчика. Там вроде обсуждались ошибки.

Aryuts

Спасибо. Пойду искать инфу =)
#6 3 сентября 2014 в 17:41
Пока не за что. Учтите, что компонент писался под версию 2.0. Проверьте в ней.
#7 3 сентября 2014 в 21:26
Урок первый.

Если в PHP скрипте происходит ошибка, то выполнение скрипта прерывается и в браузер выводится текст ошибки, обычно содержащий указание на файл и строку, приведшую к ошибке. Но вывод ошибок в браузер на рабочих серверах очень часто отключен, т.к. это прямая угроза безопасности. Вместо этого, тексты ошибок обычно складываются в лог (текстовый файл), который чаще всего называется error.log и лежит где-то рядом с папкой сайта (если речь идет о стандартном виртуальном хостинге).

Соответственно, получая "белый экран" вы должны узнать его причину (текст ошибки). Иначе это загадка для телепатов.
Варианты действий:

1. Посмотреть в лог ошибок. Если не знаете где он — спросить у хостера или сисадмина. Лог может содержать много записей, поэтому нужно смотреть по времени, указанному в каждой строке. Не нужно постить весь лог целиком. Засеките время, в которое вы открываете страницу с ошибкой и ищите в логе строки по этому времени.

2. Включить вывод ошибок в браузер. Либо через php.ini, установив директиву display_errors в On:
  1. display_errors = On
.
Либо, через .htaccess в корне сайта, добавив туда правило:
  1. php_value display_errors 1
.
После получения текста ошибки его вывод нужно отключить обратно. Выводить ошибки на рабочих сайтах не безопасно, т.к. они могут выдать различную информацию злоумышленникам.

Получив текст ошибки вы с вероятностью в 90% сами поймете в чем дело.
#8 6 сентября 2014 в 12:30


Урок первый.

Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст

r2

В том то и дело, зная ошибку я бы сам исправил. Проблема в том что ошибка невыводится. Пробовал оба варианта и через эйчтиаксесс, и через настройки пхп ини...
Очень странно просто, белый экран.

Я больше скажу, я даже знаю где ошибка, он в контроллере join.php в функции обработки добавления фотки в битву. Но так как я весьма посредственно знаком с пхп, а тем паче с ООП синтаксисом пхп… найти эту ошибку и исправить, мне очень сложно… почти не возможно. Именно поэтому я и прошу помощи тут.
Что странно… в видео уроке, всё работает. Тот же самый код у меня на сайте выдаёт белый экран. Очень странно. Возможно что то было изменено в версии 2.1.1? Как я понял урок снимали на версии 2.0?
З.Ы. error.log не появляется. Что тоже странно.
И ещё Важная думаю вещ. Уведомление на месенджер админа о том что битва ждёт модерации не приходит. Хотя сама битва меняет статус на "на проверке" и в БД все данные улетают.
Вероятно что то тут вот не так:
  1. if ($battle['users_count'] >= $battle['min_users']){
  2.  
  3. $this->model->setBattleStatus($battle_id, photobattle::STATUS_MODERATION);
  4.  
  5. $messenger = cmsCore::getController('messages');
  6.  
  7. $messenger->addRecipient( $this->options['admin_id'] );
  8.  
  9. $notice = array(
  10. 'content' => sprintf(LANG_PHOTOBATTLE_MODERATION_NOTICE, $battle['title']),
  11. 'actions' => array(
  12. 'view' => array(
  13. 'title' => LANG_SHOW,
  14. 'href' => href_to($this->name, 'battle', $battle_id)
  15. )
  16. )
  17. );
  18.  
  19. $messenger->sendNoticePM($notice);
  20.  
  21. }
  22.  
  23. $this->redirectToAction('battle', array($battle_id));
  24.  
#9 11 сентября 2014 в 01:33
Не будет помощи страждущим… пичаль.
#10 11 сентября 2014 в 09:20

Не будет помощи страждущим… пичаль.

Блицкриг
Так телепатов нету. Без текста ошибки это тыкать пальцем в небо. Вам нужно разобраться почему логи не пишутся. Без логов программировать тот еще мазохизм. Если хостинг коммерческий, то лучше всего обратиться в саппорт с этим вопросом.
#11 11 сентября 2014 в 11:20


Не будет помощи страждущим… пичаль.

Блицкриг
Так телепатов нету. Без текста ошибки это тыкать пальцем в небо. Вам нужно разобраться почему логи не пишутся. Без логов программировать тот еще мазохизм. Если хостинг коммерческий, то лучше всего обратиться в саппорт с этим вопросом.

r2


В логах ошибок может не быть если ошибка не на стороне сервера. Но у меня с логами всё в порядке. Прекрасно пишутся, так что хостер путёвый.

Проверял вот так:

— Удаляю лог файл если есть.
— Захожу на сайт, в фотобитвы.
— Регистрируюсь в битве за последнего учасника — белый экран, уведомление не пришло.
— Перехожу назад, смотрю список битв. Битва запустилась, записалось в БД всё прекрасно. То есть не сработала отправка уведомления и неверно (или вообще не сработал) редирект. Хотя в браузерной строке адрес тот что надо.
— Захожу на хостинг — лог файла нету.

Правлю скрипт любого другого компонента что б появилась ошибка, убираю запятую или ещё что-нибудь.

Захожу на сайт — конечно же ошибка.
Захожу на хостинг — лог файл туточки. И всё в нём нарисовано как есть.

Итог: С белым экраном непонятный глюк или ошибка не на стороне сервака или начинается второе пришествие христа… больше ничего в голову не приходит.

UPD: И да кстати, уведомления работают нормально. То есть от других компонентов прекрасно приходят. Только с фотобатлами беда.
#12 11 сентября 2014 в 12:10

В логах ошибок может не быть если ошибка не на стороне сервера

А где тогда, на подсервере что ли? Он либо отдал информацию, либо не отдал, третьего не дано… Возможно это вообще не ошибка, а кокой нить die() где-то остался. Включайте отладку и смотрите что происходит, зачем гадать.
#13 11 сентября 2014 в 12:44
Блицкриг, нужно локализовать проблему.
Комментируйте строки, вставляйте echo, чтобы посмотреть до какого момента выполнение скрипта идет и на какой строке обрывается.
Или поставьте xdebug какой-нибудь
В общем, стандартный процесс отладки
#14 12 сентября 2014 в 21:03


В логах ошибок может не быть если ошибка не на стороне сервера

А где тогда, на подсервере что ли? Он либо отдал информацию, либо не отдал, третьего не дано… Возможно это вообще не ошибка, а кокой нить die() где-то остался. Включайте отладку и смотрите что происходит, зачем гадать.

Pasha

Нет не на подсервере. Ошибка может быть в js например… такое вам в голову не приходило?
Отладку включал, даже варнингов нету.
#15 12 сентября 2014 в 21:04


Блицкриг, нужно локализовать проблему.
Комментируйте строки, вставляйте echo, чтобы посмотреть до какого момента выполнение скрипта идет и на какой строке обрывается.
Или поставьте xdebug какой-нибудь
В общем, стандартный процесс отладки

r2
Я попробую, как раз сейчас курю статьи на тему дебаггинка. В пхп я не очь, с ООП вообще только только познакомился😊Так что пока с трудом даётся.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.