1

シェル コマンド プロンプトに次のように入力すると、.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=
4

1 に答える 1

0

Apache には正しいユーザー権限がありますか? root として SSH にログインしている場合は、コマンドに完全にアクセスできます。そのため、特定のディレクトリに対する Apache のアクセス許可をアップグレードする必要がある場合があります。

試してみる価値もあるかもしれませんshell_exec()

Michael が指摘したように、ディレクトリの問題である可能性もあります。相対パスではなく、完全なディレクトリ パスを指定します。

于 2012-07-04T13:13:17.653 に答える