无法在php中的运行时启动Libreoffice
我已在我的无法在php中的运行时启动Libreoffice,php,laravel,pdf,libreoffice,Php,Laravel,Pdf,Libreoffice,我已在我的64位Windows 7操作系统上安装了LibreOffice版本6。 如果我尝试从命令提示符将.docx转换为.pdf,效果很好。但是如果我尝试从laravel执行命令,它会报告应用程序无法启动 Laravel代码 $process = new Process('"C:\Program Files\LibreOffice\program\soffice.exe" --headless "-env:UserInstallation=file:///tmp/LibreOffice_Con
64位Windows 7操作系统上安装了LibreOffice
版本6。
如果我尝试从命令提示符
将.docx
转换为.pdf
,效果很好。但是如果我尝试从laravel
执行命令,它会报告应用程序无法启动
Laravel代码
$process = new Process('"C:\Program Files\LibreOffice\program\soffice.exe" --headless "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" -convert-to pdf --outdir D:\converted\ D:\acceptance.docx');
$process->run();
错误消息
$process = new Process('"C:\Program Files\LibreOffice\program\soffice.exe" --headless "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" -convert-to pdf --outdir D:\converted\ D:\acceptance.docx');
$process->run();
有什么解决办法吗?这个错误非常令人困惑,因为它不仅发生在bootstrap.ini
文件在磁盘上无效时,而且发生在调用soffice.exe
时-env
变量被错误覆盖时。因为LibreOffice会在运行时在内存中重写env vars之后验证bootstrap.ini
文件的内容。
谢谢LIBREOFFICE给您带来这样一个误导性的错误
LOL
我在某个时候遇到了同样的错误,并做了一些调查,直到我注意到我为-env:UserInstallation
设置的值不正确。
在您的情况下,一个参数被传递给进程
初始值设定项,如下所示:
'"C:\Program Files\LibreOffice\program\soffice.exe" --headless "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" -convert-to pdf --outdir D:\converted\ D:\acceptance.docx'
它看起来像是一个环境变量。如果您使用硬编码路径测试进程
,可能会有所帮助。为了实现这一点,您可以将“-env:UserInstallation=…”
位更改为
-env:UserInstallation=file:///C:/tmp/LibreOffice_Conversion_abc
。请注意,由于您的操作系统是Windows,我还在路径中添加了驱动器C:
字母。确保此路径存在并对其进行测试。如果它有效,那么你可以专注于以你希望的方式正确地进行论证
如果您还没有在Windows和Linux/Unix上正确使用文件URI方案,请查看以下页面:该错误非常令人困惑,因为它不仅发生在bootstrap.ini
文件在磁盘上无效时,而且发生在调用时-env
变量被错误覆盖时soffice.exe
。因为LibreOffice会在运行时在内存中重写env vars之后验证bootstrap.ini
文件的内容。
谢谢LIBREOFFICE给您带来这样一个误导性的错误
LOL
我在某个时候遇到了同样的错误,并做了一些调查,直到我注意到我为-env:UserInstallation
设置的值不正确。
在您的情况下,一个参数被传递给进程
初始值设定项,如下所示:
'"C:\Program Files\LibreOffice\program\soffice.exe" --headless "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" -convert-to pdf --outdir D:\converted\ D:\acceptance.docx'
它看起来像是一个环境变量。如果您使用硬编码路径测试进程
,可能会有所帮助。为了实现这一点,您可以将“-env:UserInstallation=…”
位更改为
-env:UserInstallation=file:///C:/tmp/LibreOffice_Conversion_abc
。请注意,由于您的操作系统是Windows,我还在路径中添加了驱动器C:
字母。确保此路径存在并对其进行测试。如果它有效,那么你可以专注于以你希望的方式正确地进行论证
如果您还没有使用Windows和Linux/Unix,请查看以下页面以获得适用于Windows和Linux/Unix的文件URI方案:所述INI文件是否可以从Laravel访问?我如何发现它可以从Laravel访问..?您可能希望运行任何其他程序而不是LibreOffice,并让它打开该文件,在示例Editor.sorry中,我无法理解..您拥有LibreOffice进程的构造函数。例如,将其替换为:newprocess('C:\Windows\notepad.exe“C:\Program Files\LibreOffice\Program\bootstrap.ini”)
上述INI文件是否可从Laravel访问?我如何发现它可从Laravel访问?您可能希望运行任何其他程序而不是LibreOffice,并让它在示例编辑器中打开该文件。抱歉,我无法理解..您有LibreOffice进程的构造函数。例如,将其替换为:newprocess('C:\Windows\notepad.exe“C:\Program Files\LibreOffice\Program\bootstrap.ini”)代码>