Фотобитвы icms 2.1.1
Учусь писать компоненты, смотрел видео урок по написанию фотобитвы.
В 3 видео возникла проблема, при добавлении последнего участника битвы… белый экран. =( соответственно сообщение в ЛС админу что битва перешла на статус модерации тоже не приходит.
Может быть кто то учился и тоже сталкивался с этой проблемой? Как побороли подскажите пожалуйста.
___________
Версия cms 2.1.1
Смотрел, но не повторял действия. Взгляните исходники.
Смотрел исходники. Всё одинаково. Для верности залил исходники вместо того что писал. Результат тот же.
P.S. Загляните в блог разработчика. Там вроде обсуждались ошибки.
По возможности взгляну. Может разработчики подскажут.
P.S. Загляните в блог разработчика. Там вроде обсуждались ошибки.
Спасибо. Пойду искать инфу =)
Если в PHP скрипте происходит ошибка, то выполнение скрипта прерывается и в браузер выводится текст ошибки, обычно содержащий указание на файл и строку, приведшую к ошибке. Но вывод ошибок в браузер на рабочих серверах очень часто отключен, т.к. это прямая угроза безопасности. Вместо этого, тексты ошибок обычно складываются в лог (текстовый файл), который чаще всего называется error.log и лежит где-то рядом с папкой сайта (если речь идет о стандартном виртуальном хостинге).
Соответственно, получая "белый экран" вы должны узнать его причину (текст ошибки). Иначе это загадка для телепатов.
Варианты действий:
1. Посмотреть в лог ошибок. Если не знаете где он — спросить у хостера или сисадмина. Лог может содержать много записей, поэтому нужно смотреть по времени, указанному в каждой строке. Не нужно постить весь лог целиком. Засеките время, в которое вы открываете страницу с ошибкой и ищите в логе строки по этому времени.
2. Включить вывод ошибок в браузер. Либо через php.ini, установив директиву display_errors в On:
display_errors = On
Либо, через .htaccess в корне сайта, добавив туда правило:
php_value display_errors 1
После получения текста ошибки его вывод нужно отключить обратно. Выводить ошибки на рабочих сайтах не безопасно, т.к. они могут выдать различную информацию злоумышленникам.
Получив текст ошибки вы с вероятностью в 90% сами поймете в чем дело.
Урок первый.
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
В том то и дело, зная ошибку я бы сам исправил. Проблема в том что ошибка невыводится. Пробовал оба варианта и через эйчтиаксесс, и через настройки пхп ини...
Очень странно просто, белый экран.
Я больше скажу, я даже знаю где ошибка, он в контроллере join.php в функции обработки добавления фотки в битву. Но так как я весьма посредственно знаком с пхп, а тем паче с ООП синтаксисом пхп… найти эту ошибку и исправить, мне очень сложно… почти не возможно. Именно поэтому я и прошу помощи тут.
Что странно… в видео уроке, всё работает. Тот же самый код у меня на сайте выдаёт белый экран. Очень странно. Возможно что то было изменено в версии 2.1.1? Как я понял урок снимали на версии 2.0?
З.Ы. error.log не появляется. Что тоже странно.
И ещё Важная думаю вещ. Уведомление на месенджер админа о том что битва ждёт модерации не приходит. Хотя сама битва меняет статус на "на проверке" и в БД все данные улетают.
Вероятно что то тут вот не так:
if ($battle['users_count'] >= $battle['min_users']){ $this->model->setBattleStatus($battle_id, photobattle::STATUS_MODERATION); $messenger = cmsCore::getController('messages'); $messenger->addRecipient( $this->options['admin_id'] ); 'title' => LANG_SHOW, 'href' => href_to($this->name, 'battle', $battle_id) ) ) ); $messenger->sendNoticePM($notice); }
Так телепатов нету. Без текста ошибки это тыкать пальцем в небо. Вам нужно разобраться почему логи не пишутся. Без логов программировать тот еще мазохизм. Если хостинг коммерческий, то лучше всего обратиться в саппорт с этим вопросом.Не будет помощи страждущим… пичаль.
Так телепатов нету. Без текста ошибки это тыкать пальцем в небо. Вам нужно разобраться почему логи не пишутся. Без логов программировать тот еще мазохизм. Если хостинг коммерческий, то лучше всего обратиться в саппорт с этим вопросом.Не будет помощи страждущим… пичаль.
В логах ошибок может не быть если ошибка не на стороне сервера. Но у меня с логами всё в порядке. Прекрасно пишутся, так что хостер путёвый.
Проверял вот так:
— Удаляю лог файл если есть.
— Захожу на сайт, в фотобитвы.
— Регистрируюсь в битве за последнего учасника — белый экран, уведомление не пришло.
— Перехожу назад, смотрю список битв. Битва запустилась, записалось в БД всё прекрасно. То есть не сработала отправка уведомления и неверно (или вообще не сработал) редирект. Хотя в браузерной строке адрес тот что надо.
— Захожу на хостинг — лог файла нету.
Правлю скрипт любого другого компонента что б появилась ошибка, убираю запятую или ещё что-нибудь.
Захожу на сайт — конечно же ошибка.
Захожу на хостинг — лог файл туточки. И всё в нём нарисовано как есть.
Итог: С белым экраном непонятный глюк или ошибка не на стороне сервака или начинается второе пришествие христа… больше ничего в голову не приходит.
UPD: И да кстати, уведомления работают нормально. То есть от других компонентов прекрасно приходят. Только с фотобатлами беда.
А где тогда, на подсервере что ли? Он либо отдал информацию, либо не отдал, третьего не дано… Возможно это вообще не ошибка, а кокой нить die() где-то остался. Включайте отладку и смотрите что происходит, зачем гадать.В логах ошибок может не быть если ошибка не на стороне сервера
Комментируйте строки, вставляйте echo, чтобы посмотреть до какого момента выполнение скрипта идет и на какой строке обрывается.
Или поставьте xdebug какой-нибудь
В общем, стандартный процесс отладки
А где тогда, на подсервере что ли? Он либо отдал информацию, либо не отдал, третьего не дано… Возможно это вообще не ошибка, а кокой нить die() где-то остался. Включайте отладку и смотрите что происходит, зачем гадать.В логах ошибок может не быть если ошибка не на стороне сервера
Нет не на подсервере. Ошибка может быть в js например… такое вам в голову не приходило?
Отладку включал, даже варнингов нету.
Я попробую, как раз сейчас курю статьи на тему дебаггинка. В пхп я не очь, с ООП вообще только только познакомился😊Так что пока с трудом даётся.
Блицкриг, нужно локализовать проблему.
Комментируйте строки, вставляйте echo, чтобы посмотреть до какого момента выполнение скрипта идет и на какой строке обрывается.
Или поставьте xdebug какой-нибудь
В общем, стандартный процесс отладки