@khodos_dmitry

Как не подгружать файл, если в нем фатальная ошибка?

try catch не срабатывает при фатальных ошибках. Есть выход, чтобы сайт продолжал работу, а файл с ошибкой не подгружался?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Правильный путь - сделать копию скриптов и сайта для разработчика и пусть учится.

Если очень хочется, можно проверить синтаксис файла перед инклудом через командную строку
php --syntax-check /some/file.php
Можно сделать такой вызов через exec() или аналоги
Всё это дикие костыли, в том числе будет создавать нагрузку на сервер.

https://www.php.net/manual/ru/features.commandline...
Предоставляет удобный способ для проверки заданного PHP-кода на наличие синтаксических ошибок. В случае успешной проверки будет напечатана следующая фраза: "No syntax errors detected in ", а код возврата будет равен 0. При неудачной проверке будет выведено "Errors parsing " вместе с внутренними сообщениями парсера, а код возврата будет равен -1.

Данная опция не будет обнаруживать фатальные ошибки (например, вызов неопределенных функций). Используйте опцию -f, если вы хотите проверить код на наличие фатальных ошибок.


Есть вариант и с try/catch при использовании кастомного error-handler'a
Чтобы при fatal error бросалось исключение которое можно поймать

https://www.php.net/manual/en/class.errorexception.php
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

try { 
require "somethin.php"
} catch(...) {}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Технически это возможно, но не нужно на это закладываться.
Тут явно кривая постановка вопроса.
Не должно быть так чтобы синтаксическая ошибка была штатной ситуацией
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽