我正在尝试通过命令行使用unoconv通过PHP将Word文档转换为PDF。
我正在使用Symfony Process Component通过命令行运行命令。
public function run()
{
$cmd = 'unoconv --listener & unoconv ' . $this->path;
//Tested this to check for permissions and this worked.
//$cmd = 'touch /vagrant/public/testfile.pdf';
$process = new Process($cmd);
$process->run();
return $process->getOutput();
}
这不会产生任何输出,并且不会转换文件。但是,如果我回显
$cmd
并将其粘贴到CLI中,它将按预期转换文件并记录输出。任何想法可能是什么问题?
编辑:
从那以后,我尝试了:在symfony类上调用
mustRun()
和start()
方法。mustRun()
给出以下错误:"The command '//command//' failed. Exit Code: 251(Unknown error) Output: ================ Error Output: ================
按照Diego Ferri的建议添加日志代码后,我在日志文件中得到
Error: Unable to connect or start own listener. Aborting.
;但我在网上找不到太多有帮助的方法。 最佳答案
请阅读this section,但还要检查troubleshooting section。
外壳程序可能缺少一些重要的环境变量,无法使unoconv / LibreOffice正常工作(PATH,HOME等)。并且建议您使用unoconv调用LibreOffice python二进制文件,而不要留给unoconv来确定LibreOffice和python的位置。