|
Поделиться

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

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

Сообщение c61 » 16.02.14 10:17

В случае, если в коде 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 КБ) Скачиваний: 333


Тема на моей тестовой площадке: тынц.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

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

Спасибо, установил, полезня фича. Хочу выразить благодарность аффтару c61 за его моды, быстро, просто, лаконично, установка - одно удовольствие! :lol: :lol:
Алкаш
 
Сообщения: 64
Зарегистрирован: 16.02.14 12:52

Сообщение c61 » 16.02.14 15:06

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

Насчет "быстро, просто, лаконично" - обязательно сделаю какой-нибудь жутко сложный (но очень нужный) мод с установкой за три часа... или за сутки :lol: Ну если у самого терпения хватит :lol:
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Shredder » 16.02.14 16:32

А разве добавление строки php_value display_errors 1 в .htaccess даёт не тот же самый эффект, и при этом не зависит от версии PHP? Или я не прав?
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 849
Зарегистрирован: 22.08.13 09:05

Сообщение c61 » 16.02.14 20:51

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

Однако, есть такой фокус с php, что при, например, буферированном выводе, или в хук-функции и тп, то есть в некоторых особых ситуациях, никаких сообщений не выдаётся. Остаётся лишь лог.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение vladimir1983 » 21.02.14 00:41

c61
Какую ошибку и при каких настройках я не увижу при наличии ini_set('display_errors', 'on'); в config.php на вскидку можешь сказать?
Аватара пользователя
vladimir1983
 
Сообщения: 40
Зарегистрирован: 19.01.14 05:09

Сообщение c61 » 21.02.14 06:44

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

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

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

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

и тд и тп.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Shredder » 25.11.15 17:25

Патч просто спас меня на одном форуме, где проводил работы несколько дней назад. Добавление стандартной строчки php_value display_errors 1 в .htaccess почему-то не помогало, всё равно были белые страницы. Бесило страшно :D Установил и смахнул гору с плеч.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 849
Зарегистрирован: 22.08.13 09:05


Вернуться в Модификации сайта phpBB-Work.ru

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1