0

「ImagickException」とメッセージ「ファイルを開くことができません/data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png」

こんにちは。このメッセージは、WebページからPDFファイル(pngファイル)を作成したいときに表示されます。PDFのコンテンツにPNGファイルが含まれている場合にのみエラーがスローされます。すべてのpngファイルを削除すると、それはpdfになっているはずですが、すべてが正しいです。PHP情報を見ると、pngがImagickでサポートされている形式であることがわかります。私がグーグルで解決策を見つけようとしたとき、それは同じエラーで多くのサイトを返しましたが、ほとんど解決策がありませんでした。私が見つけた唯一の解決策は、サーバーに別のライブラリをインストールすることです。しかし、もしあれば別の解決策をお勧めします。

アドバイスをお願いしますトーマス

4

2 に答える 2

3

ImageMagickは確かにpngファイルを取得してpdfに変換できます。ファイルが実際にサーバーの正しい場所にあることを確認します。

ImageMagickへのinoutコマンドが正しくないように感じます。以下のパスは奇妙に見えます。

data / web / myweb.com / sub / 7 / file:/data/web/myweb.com/sub/7/sites/default/files/logo.png
                         ^^^^^
                         これは期待されていますか?

ウェブサイトを教えていただければ、もっとお話しできます。そうでなければ、私はそれがウェブサイトのphp/pythonスクリプトのバグだと言うでしょう。私にはImageMagickの問題のようには見えません。

于 2011-05-10T08:14:39.830 に答える
1

ImagickExceptionエラーメッセージは、Imagick(PHPクラス)が「file://」プレフィックスを窒息させていることを示しています。これは、ストリームラッパーであり、かなり最近のPHP追加です。Imagickのドキュメントでは、stremwrappersの使用について明確ではなく、Imagickがそれらをサポートしていないことは間違いありません。ファイル名の最初のバイトに「/」がない場合、ファイル名は相対的であると見なされ、現在のディレクトリがそのファイルの前に付加され、質問に貼り付けたモンスター文字列が作成されます。

解決策は、Imagickに送信するファイル名の「file://」プレフィックスを削除することです。ファイル名は絶対(/で始まる)または相対のいずれかである必要があります。

if (strpos('file://', $filename) === 0) {
  $filename = substr($filename, 7);
}
于 2013-01-20T20:50:03.243 に答える