У меня есть PHP-скрипт, который создает другие PHP-файлы на основе пользовательского ввода. В основном, есть файлы, содержащие языковые константы (define
), которые могут быть переведены пользователем. Чтобы избежать ошибок во время выполнения, я хочу проверить вновь записанные файлы на наличие ошибок синтаксического анализа (из-за «необычных» последовательностей символов). Я прочитал несколько постов здесь на SO (например, PHP включают файлы с ошибками разбора ) и попробовал функцию, которая использует
$output = exec("php -l $filename");
, чтобы определить, правильно ли анализируется файл. Это прекрасно работает на моей локальной машине, но на машине провайдера вывод вызовов на exec("php ...")
кажется всегда пустым. Я попытался вызвать ls
, и он вывел меня, что привело меня к предположению, что PHP каким-то образом настроен так, чтобы не реагировать на вызовы командной строки или около того. Кто-нибудь знает способ обойти это?
РЕДАКТИРОВАТЬ: Я забыл упомянуть, я уже пробовал shell_exec
, и это также не дает результата. В ответ на ответ сганеша: я тоже это пробовал, извините, я забыл упомянуть. Однако выходные данные (второй аргумент) всегда будут пустым массивом, а возвращаемое значение всегда будет 127, независимо от того, есть ли у файла PHP для проверки синтаксические ошибки или нет.