我试图在 PHP 脚本中执行 shell 命令,但 exec 返回 126 代码,这意味着“调用的命令无法执行”(权限问题或命令不是可执行文件)。但最有趣的是,如果我在 cli 下运行相同的 php 脚本,它运行良好。它出什么问题了?
也许环境有一些问题?因为当我在 Apache 下运行它时,如果我不使用可执行文件的绝对路径,它会返回 127 代码(在 cli 下它运行良好并返回 0,即使我只使用文件名)。文件存储在 /usr/local /bin 文件夹。
更新:
正如评论中所要求的,我展示了我的代码示例,但没有什么特别之处。
这部分在 cli 下工作正常,但在 apache 下不起作用($retval
将等于 127):
$output = array();
$retval = 0;
exec( "myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );
这段代码将返回$retval = 126
$output = array();
$retval = 0;
exec( "/usr/local/bin/myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );