4

私は一日中これにいました。画像を Mediawiki にアップロードしようとしていますが、ImageMagick がサムネイルを作成しようとすると、次のエラーが表示されます。

Error creating thumbnail: convert: no decode delegate for this image format `/tmp/magick-11924QG1rRXzT948I' @ error/constitute.c/ReadImage/552.
convert: no images defined `/tmp/s3thumb-cripEh' @ error/convert.c/ConvertImageCommand/3127.

mediawiki のデバッグ ファイルをセットアップすると、ログに次のように表示されます。

BitmapHandler::doTransform: creating 112x120 thumbnail at /tmp/s3thumb-cripEh using scaler im
BitmapHandler::doTransform: called wfMkdirParents(/tmp)
BitmapHandler::getMagickVersion: Running convert -version
wfShellExec: /bin/bash '/var/www/mediawiki-1.21.2/includes/limit.sh' ''\''/usr/local/bin/convert'\'' -version' 'MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=202400; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180'
BitmapHandler::transformImageMagick: running ImageMagick: '/usr/local/bin/convert' -quality 80 -background white -define jpeg:size=112x120 ''  -thumbnail '112x120!' -depth 8 -sharpen '0x0.4'  -rotate -0   '/tmp/s3thumb-cripEh' 2>&1
wfShellExec: /bin/bash '/var/www/mediawiki-1.21.2/includes/limit.sh' 'OMP_NUM_THREADS='\''1'\'' '\''/usr/local/bin/convert'\'' -quality 80 -background white -define jpeg:size=112x120 '\'''\''  -thumbnail '\''112x120!'\'' -depth 8 -sharpen '\''0x0.4'\''  -rotate -0   '\''/tmp/s3thumb-cripEh'\'' 2>&1' 'MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=202400; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180'
[thumbnail] thumbnail failed on ip-10-168-26-167: error 1 "convert: no decode delegate for this image format `/tmp/magick-11924QG1rRXzT948I' @ error/constitute.c/ReadImage/552.
convert: no images defined `/tmp/s3thumb-cripEh' @ error/convert.c/ConvertImageCommand/3127." from "'/usr/local/bin/convert' -quality 80 -background white -define jpeg:size=112x120 ''  -thumbnail '112x120!' -depth 8 -sharpen '0x0.4'  -rotate -0   '/tmp/s3thumb-cripEh' 2>&1"
LocalS3File::transform thumb:
LocalS3File::transform thumbTempPath: /tmp/s3thumb-cripEh, dest: wiki-images/thumb/1/19/5ovrDaU.jpg/112px-5ovrDaU.jpg
info:1
LocalS3File::transform return thumb: MediaTransformError Object
(
    [htmlMsg] => Error creating thumbnail: convert: no decode delegate for this image format `/tmp/magick-11924QG1rRXzT948I' @ error/constitute.c/ReadImage/552.<br />
convert: no images defined `/tmp/s3thumb-cripEh' @ error/convert.c/ConvertImageCommand/3127.<br />

    [textMsg] => Error creating thumbnail: convert: no decode delegate for this image format `/tmp/magick-11924QG1rRXzT948I' @ error/constitute.c/ReadImage/552.<br />
convert: no images defined `/tmp/s3thumb-cripEh' @ error/convert.c/ConvertImageCommand/3127.<br />

    [width] => 112
    [height] => 120
    [url] =>
    [path] =>
    [file] =>
    [page] =>
    [responsiveUrls] => Array
        (
        )

    [storagePath:protected] =>
)

コマンドラインから試し、ログからコマンドをコピーして貼り付けました(ただし、テストファイルを使用しました):

convert -quality 80 -background white -define jpeg:size=112x120 '' -thumbnail '112x120!' -depth 8 -sharpen '0x0.4' -rotate -0 'logo.jpg'

しかし、プロセスはハングします。私が実行した場合:

sudo convert logo.png -quality 80 -background white -define jpeg:size=112x120  -thumbnail '112x120!' -depth 8 -sharpen '0x0.4'  -rotate -0 logo.jpg

できます。

DELEGATES をチェックすると、次のようになります。

DELEGATES      jng jp2 jpeg png ps tiff xml zlib

メディアウィキのデフォルトメモリを増やしてみました

$wgMaxShellMemory = 202400;

何でも試した感じです。何か案は?

編集: これは私がこれまでに発見したものです:

のバックスラッシュがエスケープされているため、シェルが ImageMagick コマンドを実行していなかったと確信しています。

wfShellExec: /bin/bash '/var/www/mediawiki-1.21.2/includes/limit.sh' ''\''/usr/local/bin/convert'\'' -version' 'MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=202400; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180'

これら''\''が原因でコマンドが実行されないため、"no decode"エラーが発生します。ファイルが存在しないため、デコードできません。にたどり着きwfShellEecましたGlobalFunctions.php。wfShellExec 関数は、ファイルの 2778 行あたりにあります。

if ( php_uname( 's' ) == 'Linux' )ブロックには次のものがあります。

escapeshellarg( $cmd )

関数を削除し、escapeshellarg()そのまま残しました$cmd

再度アップロードを試みたところ、エラーはなくなり、ファイルは作成されましたが、サムネイル ファイルが 0 バイトになりました。

何か案は?

4

1 に答える 1

0

以下では、空の文字列パラメーター''は、入力画像と想定されるものを表します。

convert -quality 80 -background white -define jpeg:size=112x120 '' -thumbnail '112x120!' -depth 8 -sharpen '0x0.4' -rotate -0 'logo.jpg'

コマンド ラインから実行sudo convert logo.png ...すると、入力イメージ ( logo.png) があったため機能しましたが、MW 内でソース イメージ パラメータが欠落していました。したがって、ここでの問題は ではありませんconvert。ImageMagick は当然、存在しない画像を変換できません。問題は、MW がソース イメージ ファイル名を提供できないことです。

あなたのケースが私のようなものである場合、空のイメージ ソース パラメーターは、ディレクトリ''内のアクセス許可にまでさかのぼる可能性があります。imagesこのディレクトリとそのすべてのサブディレクトリが、サーバー プロセスによって rwx であることを確認してください。このディレクトリのすべてをサーバーに公開すると、エラーがなくなり、画像とサムネイルが完全に表示されました。

于 2014-02-16T08:51:27.147 に答える