【发布时间】:2011-01-25 18:11:48
【问题描述】:
我有一个 PHP 脚本,可以根据用户输入创建其他 PHP 文件。基本上,有些文件包含用户可以翻译的特定语言常量 (define)。为了避免运行时错误,我想测试新编写的文件是否存在解析错误(由于“异常”字符序列)。我在这里阅读了几篇关于 SO(如PHP include files with parse errors)的帖子,并尝试了一个使用
$output = exec("php -l $filename");
确定文件是否正确解析。这在我的本地机器上完美运行,但在提供者的机器上,对exec("php ...") 的调用输出似乎总是空的。我尝试调用ls,它给了我输出,让我假设PHP 以某种方式配置为不对命令行调用左右做出反应。有谁知道解决这个问题的方法吗?
编辑:我忘了提,我已经尝试过shell_exec,它也没有给出任何结果。回应 sganesh 的回答:我也试过了,抱歉我忘了提。但是,无论要测试的 PHP 文件是否有语法错误,输出(第二个参数)始终为空数组,返回值始终为 127。
【问题讨论】:
-
执行那些 PHP 文件将是一个坏主意(我知道您在这里使用 exec 进行语法检查,但如果您的程序中的任何地方实际包含/执行它......)
-
我知道安全隐患,谢谢。
-
我知道这是一篇旧帖子,但只是为了提供信息,我在互联网上找到了关于代码 127 的信息:
127 "command not found" illegal_command Possible problem with $PATH or a typo。这是来源:tldp.org/LDP/abs/html/exitcodes.html
标签: php command-line exec