NO_White_Pages: Устранение белых страниц (пустых страниц)

Здесь вы можете скачать и получить поддержку по модам, созданным командой нашего сайта. Пожалуйста, не пишите и не задавайте вопросов, связанных с чужими разработками, используйте для этого форум ниже.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение c61 »

В случае, если в коде phpBB допущены ошибки (например, при установке какого-либо мода или при отладке мода), Вы можете увидеть белые (пустые) страницы. Некоторые при виде белых страниц не знают, что и делать... Знающим приходится анализировать логи ошибок, добавлять ini_set и т.п., что отнимает массу времени. Не проще ли использовать собственную функцию обработки shutdown и выдать на экран описание ошибки ? Да, проще, и во многих случаях это помогает. Однако, для получения инормации об ошибке требуется функция error_get_last, которая появилась в php начиная с версии 5.2.0, что является ограничением на использование данного мода.

Итак, создаём файл includes/fatal_error_handler.php со следующим содержимым:

Код: Выделить всё

<?php
//
// phpBB NO White Pages
// v.0.0.1 20140216
// copyright (c) 2014 c61 http://c61.no-ip.org <c61@yandex.ru>
// license http://opensource.org/licenses/gpl-license.php GNU Public License
//

function fatal_error_handler()
{
	if(function_exists('error_get_last'))
	{
		if($last_error = error_get_last())
		{
			switch ($last_error['type'])
			{
				case E_ERROR:
				case E_PARSE:
				case E_CORE_ERROR:
				case E_COMPILE_ERROR:
				case E_USER_ERROR:
				case E_RECOVERABLE_ERROR:
				{
					echo '<b>Error ' . $last_error['type'] . ': ' . $last_error['message'] . ' at file ' . $last_error['file'] . ' line ' . $last_error['line'] . '</b><br /><br />';
					break;
				}
				default:
				{
					break;
				}
			}
		}
	}
}

register_shutdown_function('fatal_error_handler');
?>
Затем в файле common.php ищем:

Код: Выделить всё

require($phpbb_root_path . 'includes/startup.' . $phpEx);
и добавляем ПЕРЕД:

Код: Выделить всё

require($phpbb_root_path . 'includes/fatal_error_handler.' . $phpEx);
Вот и всё... В случае труднодиагностируемой ошибки, например, в хук-функции, на белой странице можно видеть сообщение следующего содержания (на примере hook_brquotes.php):

Код: Выделить всё

Error 4: syntax error, unexpected '''' (T_CONSTANT_ENCAPSED_STRING) at file forum/includes/hooks/hook_brquotes.php line 128
и всё становится ясным.

Скачать:
no_white_pages_v_0_0_1.zip
(2.27 КБ) 945 скачиваний
no_white_pages_v_0_0_1.zip
(2.27 КБ) 945 скачиваний
Тема на моей тестовой площадке: тынц.
Алкаш
Сообщения: 76
Зарегистрирован: 16.02.14 12:52
Благодарил (а): 23 раза
Поблагодарили: 3 раза

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение Алкаш »

Спасибо, установил, полезня фича. Хочу выразить благодарность аффтару c61 за его моды, быстро, просто, лаконично, установка - одно удовольствие! :lol: :lol:
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение c61 »

Алкаш писал(а):Спасибо
Пжлст ! И спасибо за тестирование !

Насчет "быстро, просто, лаконично" - обязательно сделаю какой-нибудь жутко сложный (но очень нужный) мод с установкой за три часа... или за сутки :lol: Ну если у самого терпения хватит :lol:
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение Shredder »

А разве добавление строки php_value display_errors 1 в .htaccess даёт не тот же самый эффект, и при этом не зависит от версии PHP? Или я не прав?
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение c61 »

Это всего лишь аналог настройки в php.ini. Можно ini_set на крайняк добавить в common.php.

Однако, есть такой фокус с php, что при, например, буферированном выводе, или в хук-функции и тп, то есть в некоторых особых ситуациях, никаких сообщений не выдаётся. Остаётся лишь лог.
Аватара пользователя
vladimir1983
Сообщения: 40
Зарегистрирован: 19.01.14 05:09
Благодарил (а): 12 раз
Поблагодарили: 5 раз

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение vladimir1983 »

c61
Какую ошибку и при каких настройках я не увижу при наличии ini_set('display_errors', 'on'); в config.php на вскидку можешь сказать?
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение c61 »

Мой пост выше - про это сказано. Повторю:

Синтаксис в хук-функции, например.

Есть ещё ситуации с синтаксисом, например, при включенной буферизации вывода - как раз случай phpbb при обработке шаблонов.

И ещё несколько ситуаций... экзотических, но не для phpbb ;)

и тд и тп.
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

NO_White_Pages: Устранение белых страниц (пустых страниц)

Сообщение Shredder »

Патч просто спас меня на одном форуме, где проводил работы несколько дней назад. Добавление стандартной строчки php_value display_errors 1 в .htaccess почему-то не помогало, всё равно были белые страницы. Бесило страшно :D Установил и смахнул гору с плеч.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Ответить