私は一日中これにいました。画像を 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 バイトになりました。
何か案は?