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']; }); |
今回はこれで、無事正常にアップロードができるようになりました!