无法在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”)