我的笔记本电脑上安装了一个Web服务器。我正在构建一个我通过本地网络访问的Web应用程序。 我有一个php文件,其中包含以下行:
$command = "/usr/bin/oowriter --invisible --convert-to pdf /var/www/hackathon/document/gaurav.doc -outdir /var/www/hackathon/pdf/"
exec($command, $output, $return_var);
print_r($output);
所以,问题是,当我在终端运行上面的代码时,php运行完美。但是当通过Web浏览器访问时,输出只是空的,并且没有按预期进行转换。
Apache错误日志显示以下行:
[Java framework]函数createSettingsDocument(elements.cxx)中的错误 javaldx失败了!
警告:无法从javaldx读取路径
我尝试过https://wiki.archlinux.org/index.php/Libreoffice#Fixing_Java_Framework_Error的解决方案。 但它没有用。
我正在使用OpenJDK 7。
有没有人知道如何使这项工作?
答案 0 :(得分:7)
不能投票,不能评论(还)......所以......
蒂姆 - 欧文所说的是真的。
该错误实际上表明函数createSettingsDocument 中的错误,这是一个名为createSettingsDocument(注意:创建设置文档)的函数失败的提示....
以下是您(或至少我)让它发挥作用的方式:
在我的服务器上,所需的目录实际上是 / var / www / libreoffice ,而在我的桌面计算机中,该目录将是 /var/www/.config/libreoffice 强>所以你需要确定。
答案 1 :(得分:4)
Fraber的回答为我解决了这个问题!
用于:
$cmd = 'HOME='.getCWD().' && export HOME && libreoffice --headless ....';
exec($cmd);
libreoffice然后在php脚本目录中创建了“.config”和“libreoffice”目录。显然,它必须可以通过网络服务器进程编写。
答案 2 :(得分:3)
OpenOffice需要一个用户目录。由于您尝试使用Web服务器调用OpenOffice,因此必须授予相应的用户写入权限。例如,在Debian上,这意味着允许 www-data 写入 /var/www/.openoffice.org / :
mkdir /var/www/.openoffice.org
chown www-data /var/www/.openoffice.org
答案 3 :(得分:1)
我从Web服务器(实际上是“NaviServer”4.99)运行“ooffice --headless --convert-to pptx filename”时出现了相同的错误消息。上述解决方案并没有解决我的问题,但他们让我走上正轨。事实证明,NaviServer将“HOME”环境变量更改为其安装目录/ usr / local / ns,以便LibreOffice尝试访问并在此目录中创建.config文件夹。我通过从Web服务器执行BASH“set”命令并检查环境变量来发现。
答案 4 :(得分:0)
我在使用Debian 10(破坏者)中的php文件thorugh apache2将文档转换为odf时遇到了这个问题。
在浏览器和apche日志中显示
"Array ( [0] => javaldx failed! [1] => Warning: failed to read path from javaldx )"
我在/ var / log / syslog中检查syslog并收到以下错误。 这会导致apache的主目录中出现某些权限和目录问题。
Apr 18 02:44:53 siptrunkbgp kernel: [744789.941286] audit: type=1400 audit(1587192293.959:70491): apparmor="ALLOWED" operation="mkdir" profile="libreoffice-oopslash" name="/var/www/.config/" pid=9835 comm="oosplash" requested_mask="c" denied_mask="c" fsuid=33 ouid=33
Apr 18 02:44:54 siptrunkbgp kernel: [744789.995119] audit: type=1400 audit(1587192294.015:70492): apparmor="ALLOWED" operation="mkdir" profile="libreoffice-soffice" name="/var/www/.config/" pid=9852 comm="soffice.bin" requested_mask="c" denied_mask="c" fsuid=33 ouid=33
因此,我仅创建.config目录,并使用以下命令在我的apache根目录(/ var / www)中给予适当的权限。
mkdir -p /var/www/.config/libreoffice
chown -Rf www-data.www-data /var/www/.config /
这将允许apache用户使用libreoffice创建所需的文件进行转换。