WordPressのメディアライブラリに画像をアップロードしようとした際、PNGファイル(特に1MB以上)で画面が固まるように見える現象が発生したので、対処した方法を記載します。
実際には画像自体はアップロードされているのに、完了の表示がされず、その後の画面更新も行われないという不自然な状態に陥るケースです。
発生したケース
対象画像:PNG形式の画像ファイル
容量:1MBを超えるもの(1MB未満では正常動作)
症状:アップロード中に画面が止まったように見える(画像は実際にはアップされている)
その他:JPEGファイルでは同サイズ以上でも問題なくアップできる
対処1 php.iniの設定を見直す
例では、一般的なレンタルサーバーでは、下記設定項目があると思います。
今回はエックスサーバーのサイトで発生しました。
| 設定項目 | 変更後目安(設定値より低い場合は大きくする) | 
|---|---|
| memory_limit | 512M ( メモリを制限しない場合は -1 ) | 
| max_execution_time | 120 | 
| max_input_time | 120 | 
| upload_max_filesize | 20M | 
| post_max_size | 20M | 
確認したのですが、実際はこれ以上の設定値を入れており、今回の場合は、これが原因ではありませんでした。
エラーログを確認
エラーログを確認したところ、下記の様なエラーが出力されていました。
[proxy_fcgi:error] ~~~ Failed to read FastCGI header Connection reset by peer
調べてみると「FastCGI(PHPプロセス)が途中で強制終了しているため、PNGアップロード後の処理が中断されている」とのこと。
対処2 Imagick ではなく GD に切り替えてみる(軽量処理にする)
テーマの function.php に下記を追加すると画像の処理に、GDを使用するようになります。
| 1 2 3 4 5 6 7 | add_filter('wp_image_editors', function() {     return ['WP_Image_Editor_GD', 'WP_Image_Editor_Imagick']; }); | 
今回はこれで、無事正常にアップロードができるようになりました!

 
	 
		 
			 
			 
			 
			