exec()没有做任何事情

时间:2012-07-04 13:10:07

标签: php linux

当我在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);
?>

编辑 - 以下脚本产生以下结果。请注意,当shell_exec()没有时,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=

1 个答案:

答案 0 :(得分:0)

Apache是​​否拥有正确的用户权限?如果您以root身份登录SSH,那么您将拥有对命令的完全访问权限;因此您可能需要将Apache的权限升级到某些目录。

您可能还会发现值得尝试shell_exec()

正如迈克尔指出的那样,这也可能是一个目录问题。指向完整目录路径而不是相对路径。