ошибки eval () и PHP - PullRequest
       24

ошибки eval () и PHP

1 голос
/ 31 июля 2010

У меня есть функция eval, подобная этой

if(FALSE === @eval($code)) echo 'your code has php errors';

Так что, если в коде есть ошибки синтаксиса, он вернет это сообщение.

Проблема в том, что если в коде есть что-то вроде:

  require_once('missing_file.php');

это просто сломает страницу, без моего приятного сообщения об ошибке: (

Есть ли обходной путь для этого?

1 Ответ

2 голосов
/ 31 июля 2010

Ну, во-первых, я надеюсь, что $code исходит из надежного источника и вы выполняете произвольный код, отправленный пользователями.

Во-вторых, единственный способ увидеть, как вы можете обойти это, - сохранить $code в файл, запустить его с помощью интерпретатора PHP командной строки и проверить значение выхода. Обратите внимание, что прохождение этого теста не освобождает $code фатальную ошибку, просто так получилось, что это конкретное выполнение скрипта не выдало фатальной ошибки; могут быть другие пути кода, которые вызывают такую ​​ошибку.

Это потому, что как только eval вызывает фатальную ошибку, она не может быть восстановлена ​​и сценарий умирает. eval возвращает FALSE только в случае ошибки синтаксического анализа.

...