当我在 shell 命令提示符下键入以下内容时,它会将.docx文件转换为.pdf文件。
HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx
但是当我运行以下PHP脚本时,没有任何反应。 我已经将/tmp/ayb 权限设置为 777,但仍然没有。 有什么想法吗? 谢谢
<?php
$cmd='HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx';
exec($cmd);
?>
编辑 - 以下脚本生成以下结果。 请注意,exec() 需要一些时间,而 shell_exec() 不需要。
<?php
$cmd='HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx';
echo($cmd);
exec($cmd,$out,$ret);
echo('<br />exec()<br />$out='.print_r($out,1).'<br />$ret='.$ret);
$out=shell_exec($cmd);
echo('<br />shell_exec()<br />$out='.print_r($out,1));
?>
输出
HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx
exec()
$out=Array ( )
$ret=134
shell_exec()
$out=
Apache 是否具有正确的用户权限?如果您以 root 身份登录 SSH,那么您将拥有对命令的完全访问权限;因此,您可能需要将 Apache 的权限升级到某些目录。
您可能还会发现值得尝试 shell_exec()
.
正如迈克尔指出的那样,这也可能是目录问题。指向完整的目录路径,而不是相对路径。