shell_exec()没有输出正确的值



我正试图在Laravel中构建一个简单的诊断端点,以了解被查询机器上安装了哪些版本的软件。从这个意义上说,我有这些代码行和相应的输出:

dump(shell_exec('pdftotext -v')); // null
exec('pdftotext -v', $output, $code);
dump($output, $code); // [], 0

但如果我只是在终端中写同样的东西,效果很好:

> pdftohtml -v
pdftohtml version 21.12.0

甚至:

> php -r 'shell_exec("pdftotext -v");'
pdftohtml version 21.12.0

那么,为什么会有这种差异,为什么我不能从PHP运行同样的东西呢?

OSX本地和生产Vapor环境中的行为相同。

取自php_manual站点

如果您正试图运行诸如";gunzip-t";在shell_exec中,如果得到一个空结果,则可能需要添加2>amp;1到命令结束,例如:

不总是有效:

echo shell_exec("gunzip -c -t $path_to_backup_file");

应该工作:

echo shell_exec("gunzip -c -t $path_to_backup_file 2>&1");

相关内容

  • 没有找到相关文章

最新更新