2

これは私のPHPコード内で機能します

$output = array();
exec("ls /Applications/XAMPP/htdocs/MY_APP/images", $output);
var_dump($output);

次に、ImageMagickの「convert」コマンドを使用してPNGファイルをPDFファイルに変換する必要があります。ただし、以下は何も実行せず、エラーを返しません。

$output = array()
exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
var_dump($output);

許可の問題ですか?画像フォルダにchmod777を渡しました。他に何を確認する必要がありますか?ターミナルからコマンドを実行すると、正常に動作します。

4

4 に答える 4

2

convert を変換するフル パスに変更してみてください (例: usr/local/bin/convert)。

これは以下で見つけることができます:

<?php
echo "<pre>";
system("type convert"); 
echo "</pre>";
?>

また

<?php
echo "<pre>";
system('which convert',$path); print_r($path); 
echo "</pre>";
?> 

あなたの投稿を読み直したところ、あなたが XAMPP を使用していることに気付いたので、上記の回答がうまくいかない可能性があります。

パスなどの問題を取り除くために、すべてを同じフォルダーに入れてみてください。

exec("convert test.png test.pdf");

また、ゴーストスクリプトはインストールされていますか? Ghostscript の問題ではなく、動作することを証明するには、pdf ではなく jpg として保存してみてください。

于 2013-02-15T17:58:58.277 に答える
1

PHP コードが Web サーバー (Apache など) 経由で実行されている場合、Apache プロセス (httpd) は制限された UNIX ユーザー (Apache や httpd など) で実行されている可能性があります。その制限されたUNIXユーザーは、通常、/Applications/XAMPP/htdocs/MY_APP/images/PDFを生成しようとしているディレクトリへの書き込み権限を持っていません。代わりに次のコマンドを試して、これが機能するかどうかを確認してください。

exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /tmp/test.pdf", $output);
var_dump($output);

/tmp上記のコマンドは、通常 Apache unix ユーザーが書き込み可能なディレクトリにpdf を生成しようとします。

imagesフォルダーに777を指定したことに注意してください。画像フォルダへの chmod 777 だけでは不十分であることを理解してください。MY_APP、htdocs、XAMPP、Applications など、すべての親ディレクトリの Apache ユーザーに書き込み権限を与える必要があります。これは大きなセキュリティ リスクです。追加する必要があります。

于 2013-02-15T05:10:27.793 に答える
1

私は同じ問題を抱えていました.セーフモードはオフでしたが、それでもImage Magickの変換を実行できませんでした.

何らかの理由で、php がスクリプトを認識できないことがわかりました (php.ini を介して include_path にパスを含めても)。ログを確認したところ、次のエラーが見つかりました。

sh: convert: command not found

フルパスを使用してスクリプトを呼び出そうとしました (を使用して確認しましたwhich convert) exec

したがって、変換フルパスが/usr/local/binであると仮定して、次を実行してみてください。

<?php    
    $output = array();
    exec("/usr/local/bin/convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
    var_dump($output);
?>
于 2014-04-18T16:06:28.300 に答える
0

Windows でこの問題が発生した場合は、exec('identify pathtoyourfile') を試してください。それが機能しても exec('convert ...') が機能しない場合は、IM の convert ではなく、うっかり Window の convert ユーティリティを呼び出している可能性があります。解決策は、IM の変換の名前を、たとえば cconvert に変更することです。または、IM が PATH 環境変数の先頭にあるかどうかを確認します。

于 2015-08-25T12:19:28.837 に答える