powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Поймать ошибку парсинга в PHP
6 сообщений из 6, страница 1 из 1
Поймать ошибку парсинга в PHP
    #40032573
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть скрипт на PHP, который подключает (через require) дополнительные модули-плагины.
Перед подключением задается set_error_handler. Но этот обработчик не перехватывает ошибки парсинга, если они есть в подключаемом модуле.
Можно ли их как-то перехватить? Ну или хотя бы сообщить вызывающей стороне (а это может быть cli или веб-запрос) о том, что скрипт аварийно завершился.
...
Рейтинг: 0 / 0
Поймать ошибку парсинга в PHP
    #40032582
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Но этот обработчик не перехватывает ошибки парсинга, если они есть в подключаемом модуле
А он их, вообще, перехватывает? Ведь парсинг происходит до выполнения скрипта. Да и в документации есть упоминание
https://www.php.net/manual/ru/function.set-error-handler.phpОшибки следующих типов не могут быть обработаны пользователем: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING независимо от того, где они были сгенерированы
...
Рейтинг: 0 / 0
Поймать ошибку парсинга в PHP
    #40032616
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, я и имею ввиду, что через set_error_handler такие ошибки я перехватить не могу.
А как можно? Через register_shutdown_function мне неудобно архитектурно (require вызывается внутри функции и при неудачном подключении мне нужно как-то передать значения некоторых переменных из локальной области видимости функции). Или других способов нет?
...
Рейтинг: 0 / 0
Поймать ошибку парсинга в PHP
    #40032634
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот не знаю, честно говоря, можно ли из PHP вызвать/запустить его парсер для произвольного файла. И получить результат как отсутствие или наличие в проверяемом файле синтаксических ошибок и прочего непотребства. Если можно, то попробовать в эту сторону копнуть.

Через eval() тоже вряд ли получится. Через exec() или аналогичную запустить подключаемый скрипт и в выводе проверить ошибки парсинга можно, думаю. Только это больше похоже на вырезание гланд через одно место...

Однако, не ясно, почему нельзя заранее проверить подключаемые файлы на валидность синтаксиса и устранить ошибки.
...
Рейтинг: 0 / 0
Поймать ошибку парсинга в PHP
    #40032644
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверятся файлы будут, но при проверке можно упустить какие-то сценарии, которые приведут к фатальной ошибке.
И тогда родительский скрипт будет просто тихо закрываться.
Хотелось бы, чтобы он о таких авариях мог сообщать.
...
Рейтинг: 0 / 0
Поймать ошибку парсинга в PHP
    #40032660
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, ошибки синтаксиса будут видны сразу, а ошибки рантайма будут перехватываться обработчиком.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Поймать ошибку парсинга в PHP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]