通过exec()从php调用php没有结果

Tom*_*tel 3 php command-line exec

我有一个PHP脚本,可以根据用户输入创建其他PHP文件.基本上,有些文件包含define可由用户翻译的特定语言常量().为了避免运行时错误,我想测试新写入的文件是否存在解析错误(由于"异常"字符序列).我已经在SO上阅读了几篇帖子(比如PHP包含解析错误的文件),并尝试了一个使用的函数

$output = exec("php -l $filename");
Run Code Online (Sandbox Code Playgroud)

确定文件是否正确解析.这在我的本地机器上完美运行,但在提供商的机器上,调用的输出exec("php ...")似乎总是空的.我尝试了一个调用ls,它给了我输出,让我假设PHP以某种方式配置为不响应命令行调用等等.有没有人知道这方面的方法?

编辑:我忘了提,我已经尝试过shell_exec,也没有结果.回应sganesh的回答:我也曾尝试过,对不起,我忘了提及.但是,输出(第二个参数)将始终为空数组,并且返回值将始终为127,无论要测试的PHP文件是否存在语法错误.

Ken*_*ent 9

我有同样的问题.适用于我的解决方案是在从php-give-no-output运行时找到的.我需要添加输出重定向.

$output = exec("php -l $filename 2>&1");
Run Code Online (Sandbox Code Playgroud)


sga*_*esh 6

您可以尝试使用exec第二个和第三个参数.第二个参数将具有该命令的输出.第三个参数将具有返回值.

并且exec将仅返回命令的最后一行.

$filename = "a.php";
$output = exec("php -l $filename",$op,$ret_val);
print $output."\n";
print $ret_val."\n";
var_dump($op);
Run Code Online (Sandbox Code Playgroud)