Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
1

Игнорировать Fatal Error/Parse Error и продолжить выполнение

09.01.2015, 15:08. Показов 4291. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
А как избежать вывода ошибки подключаемого файла (напр. Fatal error: Call to a member function ph_query() on a non-object in /path_to_file/file.php on line 189 ), если подключение идёт через буферизацию:

PHP
1
2
3
4
5
6
7
8
9
10
$FileName = $_SERVER["DOCUMENT_ROOT"]."/file.php";
if (file_exists($FileName)) {
   ob_end_flush(); 
   ob_start();
   @include_once $FileName;
   $file = ob_get_contents();
   $memory = memory_get_usage(true);
   ob_end_clean();
   echo $memory;
}
То есть надо продолжить выполнение скрипта, из которого подключается file.php .
В примере, что я написал, выполнение скрипта останавливается, а так как в файле есть ошибки, он их показывает.

Надо какое-то общее решение, так как править файлы file.php не предоставляется возможным. Вариант - только игнорировать ошибки, даже Fatal. Ну или если невозможно игнорировать, то продолжать выполнение скрипта из которого подключаем file.php .

читал одну статью -> http://htmlweb.ru/php/example/error_fatal.php
Можно ли как-то задействовать описанное там для моих целей? Честно говоря, не могу найти решение.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2015, 15:08
Ответы с готовыми решениями:

Forum phpbb2.Parse error: parse error, unexpected '' in install.php on line 749 Что делать?
Здравствуйте! Я скачал скрипт Forum phpbb2. Когда я выхожу на главный файл форума через браузер,...

Parse error: parse error, unexpected T_VARIABLE in C:inetlocalhostwww estpearclasses.php on line 11
Подскажите в чем тут дело, такая ошибка Parse error: parse error, unexpected T_VARIABLE in...

ImageString и ошибка Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE or '$' in
Пишу такую строку imagestring($image,1,10,10,'mytext',&black); Выдаеться такая ошибка Parse...

Правильное написание строки (Parse error: parse error, unexpected ''>'' in c:....scr.inc on line 34)
Как правильно записать следующую строку : <?="<tr><td><div id="ecategory <a...

4
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
09.01.2015, 15:15 2
думаю что нужно пробовать через try cache
0
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
09.01.2015, 21:54  [ТС] 3
Nazz, а можно чуть чуть поподробнее?

Добавлено через 1 час 20 минут
Думаю насчёт register_shutdown_function , но вот практика применения в этой ситуации сильно смущает..
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
09.01.2015, 22:06 4
Цитата Сообщение от Lustmord Посмотреть сообщение
Вариант - только игнорировать ошибки, даже Fatal.
А как это - игнорировать ошибки уровня Fatal? При появлении ошибок такого уровня скрипт перестает дальше работать. Можно отключить вывод ошибок, но скрипт просто напросто не сможет дальше работать. Перепрыгнуть через это никак не получится.

И что значит нет возможности править этот файл? Это как? Откуда он тогда там появится, кто его вообще создает?
0
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
09.01.2015, 22:35  [ТС] 5
Попробовал решить через register_shutdown_function('function_after_fail'); - заработало. Мб есть и альтернатива, но с этим прокатывает. То есть, до функции с нашим инклюдом запустил register_shutdown_function('function_after_fail');

Добавлено через 7 минут
pav1uxa, сайт клиентский и вносить изменения не имею права, а вот провести предварительные проверки надо. Сам косяк вылезает из-за разных пространств имен и/или не возможности запустить index.php инклюдом через буферизацию, хотя визуально сайт может вполне себе нормально работать).

Вообщем, для таких случаев register_shutdown_function(); - вещь.
Кстати, register_shutdown_function(); выполняет только одну функцию (по умолчанию) и завершает выполнение скрипта. Что выполнить несколько функций, можно перечислить их по очереди напр. так:

PHP
1
2
3
4
5
6
7
shutdown();
failfunction();
 
function shutdown() {
register_shutdown_function('func1'); 
register_shutdown_function('func2'); 
}
0
09.01.2015, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2015, 22:35
Помогаю со студенческими работами здесь

Parse error: parse error, unexpected T_VARIABLE in C:inetlocalhostwww estWorkmain.php on line 33
Хочу попробовать написать свой небольшой менеджер для работы с базами, написал два скрипта. при...

Выскакивает ошибка Parse error: parse error, unexpected T_STRING
<?php /* Здесь мы проверяем существуют ли переменные, которые передала форма обратной связи. Если...

SELECT ошибка Parse error: parse error, unexpected T_VARIABLE in
Помогите найти ошибку Ошибка: Parse error: parse error, unexpected T_VARIABLE in...

Выдает ошибку: Parse error: parse error, unexpected T_INT_CAST in ...
Выдает ошибку: Parse error: parse error, unexpected T_INT_CAST in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru