使用 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执行外部命令函数:exec()passthru()system()shell_exec()对比