2

この質問は近いものでしたが、うまくいきません。PDFをjpgに変換しようとしています(サムネイル用)。これが私が実行しているコマンドです:

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

私はmamp pro 1.7.2、imagemagick、ghostscriptをすべて正しくインストールして動作させています。このコマンドはシェルからは完全に機能しますが、php スクリプト内から実行すると失敗します。もう 1 つのひねりは、イメージからイメージへの変換です。シェルとスクリプトの両方から完全に機能します。gs バイナリは変換バイナリと同じディレクトリにありますが、apache/php 環境内からのゴーストスクリプト (gs) に関連するパスの問題があると思われます。また、mamp apache 環境変数 ( brybot.ca の優れたチュートリアル -- www.brybot.ca/archives/getting-imagemagick-and-more-to-work-with-mamp-on-os-x/ ) ごとに調整したので、 ImageMagick はうまく機能しており、「/opt/local/bin」は私の apache パス変数にあります。

シェルを介して、pdf から画像への変換には少し時間がかかり、imagemagick/ghostscript 変換が完了する前に php スクリプトが終了/終了し、imagemagick 変換プロセスを中止する可能性があるというしつこい考えがあります...? exec、system、shell_exec を試してみましたが、すべて役に立ちませんでした。

コマンドから出力が得られず、何も起こらないようで、apache または php ログに何も表示されません。

更新: MAMP を再起動した後、Apache ログに次のエラーが表示されるようになりました

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.

誰にもアイデアはありますか?私はこれで髪を引っ張っています...

本当にありがとう!

4

2 に答える 2

2

通常、Apacheのサーバーに対するアクセス許可は制限されています(これが目的です)。apacheに書き込みアクセス許可があることがわかっている/tmpにファイルを配置してみてください。また、Apacheは、世界中で読み取れる場合を除いて、他のユーザーが作成したファイルの読み取りに問題がある可能性があります。

于 2009-07-15T01:28:47.963 に答える
0

私はいくつかの記事を読みました.phpで組み込みのImagickを使用するより良い方法は、execを使用してシェルコマンドを使用するのが最善ではありません. 詳細については、リンクを読んでください

夢の日をありがとう

于 2010-11-18T04:46:12.847 に答える