我试图通过命令行使用unoconv通过PHP将word文档转换为PDF。我使用Symfony Process Component通过命令行运行命令。使用unoconv通过Symfony组件转换DOC为PDF
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: ================
添加日志代码迭戈费里的建议后,我得到的日志文件Error: Unable to connect or start own listener. Aborting.
;但我无法在网上找到很多有用的信息。
按以下顺序尝试:(1)指定unoconv的完整路径,(2)用'escapeshellarg'转义路径,(3)转义'&'。完整的命令可能如下所示:'/ usr/bin/unoconv --listener \&unoconv'。 escapeshellarg($ this-> path);' – bishop
忘了提及,我已经试过#1。 #2和#3没有变化。 – Kiee
错误输出文字?或者你是否用错误中显示的实际命令替换了'// //命令//''?无论如何,基于[手册页](http://linux.die.net/man/1/unoconv),使用Process与后台进程可能存在问题。尝试一次性版本:'$ cmd = sprintf('/ usr/bin/unoconv -f pdf%s',escapeshellcmd($ this-> path));'。 – bishop