php libreoffice shell_exec不能正常工作

Moh*_*ian 5 php linux centos shell-exec libreoffice

我试图转换.docx文件,以.html使用php shell_exec于CentOS 6.5

我的PHP代码:

 $command = "libreoffice --headless -convert-to html resume.docx 2>&1";
 $result = shell_exec($command);
 echo $result;
Run Code Online (Sandbox Code Playgroud)

当我跑步时index.php,http://localhost/converter/它给了我:

javaldx:找不到Java运行时环境!警告:无法从javaldx读取路径/usr/lib64/libreoffice/program/soffice.bin X11错误:无法打开显示:设置DISPLAY环境变量,使用-display选项或检查X-Server的权限(参见"man" X"resp."man xhost"了解详情)`

在终端,它完美地工作:

cd /var/www/html/converter/

libreoffice --healdess -convert-to html resume.docx

在这里它创造resume.html了我的/var/www/html/converter/.

小智 6

嗨我有同样的问题,我想从用PHP创建的DOCS转换PDF,我使用OpenSuse 12.3与LibreOffice,尝试了很多东西,最后我检测到错误在文件夹中:

1.-首先检查你是否在php.ini中没有禁用shell_exec,open_basedir不限制你的访问文件夹.

2.-在shell(终端)中以简单用户身份运行命令导出HOME =/tmp && soffice --headless --convert-to pdf --outdir/srv/www/htdocs// srv/www/htdocs/Creecimientos/SIC /应用程序/根目录/ USUARIOS/2/8_Pagare_CreePersonas.docx

3.-如果它有效,你只需要在你的代码中放入正确的文件夹,当我在PHP中运行此代码时,它会显示一个空白页面,所以我检查apache的access_log是否有任何提示:

[Java framework]函数createSettingsDocument(elements.cxx)中的错误.javaldx失败了!警告:在抛出'com :: sun :: star :: uno :: RuntimeException'的实例后,无法读取javaldx终止时调用的路径

注意:我的错误是使用导出HOME =/tmp,我检查根系统中的文件夹有777用于tmp,但问题是apache无法访问它,可能会搜索脚本的相对文件夹,但是经过测试很多东西我只放了一个文件夹,用于wwwrun HOME =/srv/www/htdocs/folder_with_777

这是我的最终代码,有效..

<?php
     function word2pdf()
        { 
        echo "Procesando";         
       $result = shell_exec('export HOME=/srv/www/htdocs/Creecimientos/sic/ && soffice --headless --convert-to pdf --outdir /srv/www/htdocs/Creecimientos/sic/ /srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx');
       echo $result;
        }

        word2pdf();
?>
Run Code Online (Sandbox Code Playgroud)

事实上,它使用writer_pdf_Export打印:convert srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx - > /srv/www/htdocs/Creecimientos/sic//8_Pagare_CreePersonas.pdf .

我在desesperate模式之前做了其他更改,但是他们都没有解决问题,试图将所有者改为soffice,发现它是巫婆$ ls -l $(自由的libreoffice),尝试用777等等.


Tri*_*are 5

/* This command will work on centos 6 /7 with installation of libreoffice headless package */
First install package on centos as : 
yum install libreoffice-headless

/* following code work to extract text format from */  
<?php  
 $result = exec("export HOME=/tmp/ && /usr/bin/libreoffice --headless   --convert-to txt:Text --outdir /tmp filePath");   
 var_dump($result); 
?>
Run Code Online (Sandbox Code Playgroud)


TD_*_*oer 0

两件事,第一命令是soffice --headless
第二我有一个类似的 javaldx 错误,它与权限有关。
当以 root 身份执行时,它工作正常,但 php 以 www-data 执行。

如果有人知道从 php 执行 libreoffice 的好方法请告诉我。
正如我得到的一句话error code 77

[Java framework] Error in function createSettingsDocument (elements.cxx).
javaldx failed!
Warning: failed to read path from javaldx
Run Code Online (Sandbox Code Playgroud)