2009-07-15 8 views
2

このquestionは近かったですが、トリックはしません。私はpdfをjpg(サムネイル用)に変換しようとしています。ここで私が実行しているコマンドです:奇妙な問題 - PHP/ImageMagick/Ghostscript

convert -quality 100 -density 200x200 /path/file.pdf /path/file.jpg 

私はMAMPプロ1.7.2、ImageMagickに、ghostscriptをすべて正しくインストールされ、作業を持っています。このコマンドはシェルからは完全に動作しますが、PHPスクリプト内から実行されると失敗します。別のひねりは、イメージからイメージへの変換であり、物はシェルとスクリプトの両方から完全に機能します。そうすれば、gsバイナリがconvertバイナリと同じディレクトリに置かれていても、apache/php環境内からghostscript(gs)に関連するいくつかのパスの問題があると私は思うでしょう。また、私はmamp apache envars per tweaked(brybot.caの優れたチュートリアル - www.brybot.ca/archives/getting-imagemagick-and-more-to-work-with-mamp-on-os-x/ )ImageMagickがうまくいき、 "/ opt/local/bin"が私のapacheパス変数にあります。

pdfからimageへの変換にはしばらく時間がかかるので、imagemagick/ghostscriptの変換が完了する前にphpスクリプトが終了/終了していると思っていました。 ?私はexec、system、shell_execを無駄にしようとしました。

私はコマンドから何も起こらないと思われ、ApacheやPHPのログに何も表示されません。

UPDATE:今、私は誰もが任意のアイデアを持っているMAMP

convert: unable to create temporary file `/path/file.pdf': Permission denied @ pdf.c/ReadPDFImage/358. convert: missing an image filename `/path/file.jpg' @ convert.c/ConvertImageCommand/2766. 

を再起動した後apacheのログに次のエラーを取得していますか?私はこの上に私の髪を引っ張っている...

ありがとう!

+0

が、これはパーミッションについてであることを確認することができ読み出すために、新しいディレクトリを指すようにENV-VARのTMPDIRを追加し、完全な権限を持つローカルアカウントのIUSRを追加しました。すべてがうまくいきます。 – Teson

答えて

2

Apacheは、通常、あなたのサーバではアクセス権が制限されています(それはあなたが望む方法です).pacheが書き込み権限を持っていることを知っている/ tmpにファイルを入れてみてください。 Apacheは、世界中で読めるものでない限り、他のユーザーが作成したファイルを読むのにも問題があります。

+0

考えてくれてありがとう、私は同じ行に沿って考えていた。ファイルは、イメージからイメージへの変換がpdfs(ゴーストスクリプト関連)を伴う変換ではなく、実際に動作していることからも分かります。 –

0

私はいくつかの記事を読んで、最高のシェルコマンドを使用してexecを使用するより良い方法は、PHPでinbuilt Imagickを使用することです。より多くのあなたが

Linkのおかげ 持っドリームデイ