NC3.2.1.1で画像の投稿が内部エラーで失敗する(ImagickException、Windows)

投稿日時: 2018/11/26 M.Nishimura

3.2.1.1に更新する際にアバター表示がおかしくなる現象に遭遇し、PHPでImageMagickを使用できるようにして解消しました。そうすると、キャビネットや掲示板への画像貼付時に内部エラーで失敗します(アップロードできない。ただし、\app\Uploads\files\upload_file\real_file_nameには実ファイルがアップロードされている)。

内部エラー発生時の error.log には、以下の記述があります。


2018-11-26 03:42:32 Error: [ImagickException] UnableToOpenBlob `files\upload_file\real_file_name\17\188\2a・・・.jpg': No such file or directory @ error/blob.c/OpenBlob/2702
Request URL: /・・/cabinets/cabinet_files_edit/add/29/parent_id:132?frame_id=39


思うに(Windowsの場合)絶対パスでファイル名を指定すれば解消するような気がしますが、そうした解決策は取り得ないでしょうか。

ほかにも何か分かる方がいらっしゃれば、ご意見を伺えればと思います。

 

※NC3.1.7の時もImageMagickを使用可能にするとこうなっていましたが、アバターを必要としていなかったため、使用不可に戻して使っていたという経緯があります。

環境:Windows Server 2012 R2, xampp-win32-7.0.28-0-VC14 (Apache 2.4.29 / MariaDB 10.1.31 / PHP 7.0.28)

Re: NC3.2.1.1で画像の投稿が内部エラーで失敗する(ImagickException、Windows)

投稿日時: 2018/11/30 M.Nishimura

結局、この問題は https://nc2.netcommons.org/bbip8a9u8-18477/#_18477 で エディ・ケイ ささき さんが書かれているものと同じだということが分かり、OSは違いますが、私も以下の方法で解消しました。


\app\Plugin\Upload\Model\Behavior\UploadBehavior.php 内の1920行目を、
$method = $this->settings[$model->alias][$field]['thumbnailMethod']; から
$method = "_resizePhp"; に変更する。

 ※protected function _createThumbnails 内の記述


\app\Uploads\files\upload_file\real_file_name内のファイルについて、ImageMagickにコマンドラインでファイルのリサイズをさせるとうまくいくことから、ImageMagickの処理の問題というよりはImageMagickへのファイルパスの渡し方に問題があるのではないでしょうか(ImageMagickはNCのドキュメントルートの存在を知らない)。

逆に、問題なく動いている環境だとどうしてうまくいっているのかがよくわかりませんが・・

蛇足ですが、NC3.1.9でIE/Edgeでキャビネットファイルダウンロード時に文字化けする問題も解消していますし、今回ImageMagickの件(ImageMagickを使うと画像添付不可/使わないとアバター使用不可)も解消したので、ホスト/クライアント共にWindowsの環境では使いやすくなったと思っています。

ありがとうございました。

3.2.1.1に更新する際にアバター表示がおかしくなる現象に遭遇し、PHPでImageMagickを使用できるようにして解消しました。そうすると、キャビネットや掲示板への画像貼付時に内部エラーで失敗します(アップロードできない。ただし、\app\Uploads\files\upload_file\real_file_nameには実ファイルがアップロードされている)。

内部エラー発生時の error.log には、以下の記述があります。


2018-11-26 03:42:32 Error: [ImagickException] UnableToOpenBlob `files\upload_file\real_file_name\17\188\2a・・・.jpg': No such file or directory @ error/blob.c/OpenBlob/2702
Request URL: /・・/cabinets/cabinet_files_edit/add/29/parent_id:132?frame_id=39


思うに(Windowsの場合)絶対パスでファイル名を指定すれば解消するような気がしますが、そうした解決策は取り得ないでしょうか。

ほかにも何か分かる方がいらっしゃれば、ご意見を伺えればと思います。

 

※NC3.1.7の時もImageMagickを使用可能にするとこうなっていましたが、アバターを必要としていなかったため、使用不可に戻して使っていたという経緯があります。

環境:Windows Server 2012 R2, xampp-win32-7.0.28-0-VC14 (Apache 2.4.29 / MariaDB 10.1.31 / PHP 7.0.28)