1

次のコードで PDF を JPG ファイルに変換しようとしています。

$pdf_file = 'text.pdf';
$save_to = 'demo.jpg'; //make sure that apache has permissions to write in this folder! (common problem)
//execute ImageMagick command 'convert' and convert PDF to JPG with applied settings
exec('convert '.$pdf_file.' '.$save_to, $output, $return_var);

if($return_var == 0) { //if exec successfuly converted pdf to jpg
print "Conversion OK";
}
else print "Conversion failed.<br />".$output;

Conversion OK というメッセージが表示されますが、画像ファイルが作成されません。別のサーバーでこれを試したところ、すべてが機能しました。ルート カタログのアクセス許可は 777 に設定されています。なぜ機能しないのかわかりません...両方のサーバーにインストールされている Imagemagick のバージョンがわかりません。たぶんそれが問題ですか?phpinfo() には、バージョンなどに関する情報はありません。

4

3 に答える 3

2

PHP 関数 exec() が php.ini ファイルで無効になっているため、「変換」の実行に問題があります。

exec() コマンドが失敗した場合、問題をトラブルシューティングするために実行できる複数の手順があります。

  1. セーフ モードがオンになっているかどうかを確認します。具体的には、ドキュメントは次のように述べています。

    注: セーフ モードが有効になっている場合、safe_mode_exec_dir 内のファイルのみを実行できます。実際的な理由から、現在、実行可能ファイルへのパスに .. コンポーネントを含めることは許可されていません。

  2. エラー報告をオンにして、さらに情報が得られるかどうかを確認してください。これは、スクリプトの先頭に次のようなコードを追加することで実現できます。

    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);
    
  3. exec() コマンドを常に機能するものに単純化します。

    exec('/bin/echo helloWorld',$output);
    var_dump($output);
    

上記のステップ 3 を試した特定のケースでは、null が返されました。Null は、exec() 関数が無効になっているときに PHP が返すものです。また、エラー報告 (ステップ #2) をオンにできた場合、出力は次のようになります。

PHP Warning:  exec() has been disabled for security reasons in /home/path/to/file.php on line 2
NULL

この問題の解決策は、php.ini で exec 関数を有効にするか、この関数を使用できるホスト/サーバーに移動することです。

于 2012-10-11T20:22:13.013 に答える
0

明示的なエラー報告を試してください:error_reporting(E_ALL)おそらく、exec権限に関する警告が表示されます。

また、「ルートカタログのアクセス許可」とは、ファイルを実行および保存するフォルダーを意味しますか?

于 2012-10-10T21:35:24.427 に答える
0

サーバーでセーフモードが有効になっていますか?

セーフモードが有効になっている場合、ファイルを実行できるのは

safe_mode_exec_dir

追加情報については、こちらを参照してください。

http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dir

于 2012-10-10T21:38:45.903 に答える