使用 shell_exec() 执行 libreoffice 命令时出错

Posted

技术标签:

【中文标题】使用 shell_exec() 执行 libreoffice 命令时出错【英文标题】:Error on executing libreoffice command using shell_exec() 【发布时间】:2019-01-18 16:06:24 【问题描述】:

代码:

shell_exec('libreoffice --convert-to pdf `'.$my_file.'` --headless');

我也试过了

shell_exec('libreoffice --convert-to pdf `'.$my_file'` --headless > /dev/null');

上面执行时服务器出错:

输出:sh: /my_files/my_file.doc: 无法执行二进制文件

注意: linux 的所有其他命令都可以正常工作,shell_exec() 只是 libreoffice 命令不工作。在 linux 终端上,libreoffice 命令工作正常,但使用 php 时无法正常工作。

【问题讨论】:

【参考方案1】:

您正在使用反引号,它告诉子shell 运行该命令并使用它的输出代替它的位置。改用双引号,它会更频繁地工作。

【讨论】:

现在,我没有收到任何错误,但文件没有被转换shell_exec("libreoffice --convert-to pdf ".$my_file." --headless"); 您并没有将反引号替换为双引号。 shell_exec('libreoffice --convert-to pdf "' . $my_file . '" --headless') -- 但现在你遇到了一个与以前不同的问题,也许应该提出一个新问题。 我也试过这样做,没有运气。不使用php转换文件,但能够使用终端进行转换。我尝试了所有可能的报价选项。 对不起,它实际上可以工作,但将文件保存到 web 目录中,我只是添加了我的 dir 路径以将转换后的文件保存在命令上。谢谢

以上是关于使用 shell_exec() 执行 libreoffice 命令时出错的主要内容,如果未能解决你的问题,请参考以下文章

无法使用PHP shell_exec执行powershell脚本函数

PHP协程:并发 shell_exec

php执行外部命令函数:exec()passthru()system()shell_exec()对比

协程 shell_exec 如何捕获标准错误流

PHP执行系统外部命令函数:exec()passthru()system()shell_exec()

LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08