【发布时间】:2019-01-23 09:12:54
【问题描述】:
我在 php 脚本中从 shell_exec 运行 libreoffice 时遇到问题。此脚本用于通过 Libreoffice 将 DOCX 转换为 HTML。该脚本在终端中运行良好,但在 Web 浏览器中运行良好。我也尝试将 HOME 设置为 /tmp,但根本不工作。
<?php
$soffice_path = '/usr/sbin/soffice';
$path_with_perm_777 = '/opt/lampp/htdocs/tmp';
$docx_file = __DIR__ . '/sample.docx';
echo `which soffice`;
echo `whoami`;
echo shell_exec('echo ${PATH}');
$command = escapeshellcmd('export HOME="/tmp"') . " && " . escapeshellcmd($soffice_path.' --headless --convert-to pdf --outdir '. $path_with_perm_777 .'/converted/ '.$docx_file);
var_dump( shell_exec($command) );
终端输出:-
/usr/bin/soffice
jack
${PATH}:/usr/bin/custom/:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin
string(175) "convert /opt/lampp/htdocs/sample.docx -> /opt/lampp/htdocs/tmp/converted//sample.pdf using filter : writer_pdf_Export Overwriting: /opt/lampp/htdocs/tmp/converted//sample.pdf"
在网络浏览器中输出:-
/usr/sbin/soffice
jack
/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
NULL
(ls -l /opt/lampp/htdocs/)的输出:
drwxrwxrwx 2 jack jack 4096 Jan 23 13:50 tmp
系统信息:
PHP 5.6.39、Manjaro Linux 18.0.2、LibreOffice 6.1.4.2
【问题讨论】:
标签: php shell docx libreoffice