WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

【WordPress】画像をアップロードすると「HTTPエラー」などのエラーが出てしまう時の確認と対処方法

公開日:2019(令和元)年11月19日/最終更新日:

WordPressのトラブルシューティング



【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

以前に公開した

という一括アップロード時の不具合に関する記事。単独の画像アップロード時の対処手順としても間違っているものではないのですが、このエラーが出る原因がより詳細に判明しましたので、追補記事として公開します。

WordPressでの画像アップロードができないというトラブルはある日突然起こることが多いです。そして、同じサイト、同じ画像でも起きたり起きなかったりするのが一番難解なところとも言えます。

昨日はできたのに、今日はダメ・・・でも後からとか翌日に試したら大丈夫だった・・コンピュータなのに、WordPressは単なるプログラムなのに何でそうなるの??と疑問を持つ方も多いでしょう。実はこれが解決に至る大きなカギとなりました。

この記事をお読みいただいている方は恐らく「HTTPエラー」などと表示されて既に画像がアップロードできず困ってらっしゃることでしょうから、まずは解決方法を紹介し、後に原因などについて紹介する形にしたいと思います。ブックマークに登録するなどして解決後にゆっくり読んでいただき、「なるほどねぇ」となっていただけたら幸いです。

WordPressサイトの画像アップロードエラー解消方法

何はともあれ、現状の不具合を解消しましょう。ただし、ここで紹介するのは一般例で、必ず改善するというものではないことを了承の上対処してみてください。

以下のコードを現在有効になっているテーマのfunctions.phpへ追記します

/********** 画像アップロード時の処理をGDに戻す **********/
function habt_image_editor_default_to_gd( $editors ) {
$gd_editor = 'WP_Image_Editor_GD';
$editors = array_diff( $editors, array( $gd_editor ) );
array_unshift( $editors, $gd_editor );
return $editors;
}
add_filter( 'wp_image_editors', 'habt_image_editor_default_to_gd' );

対処は以上です・・・。

え?たったこれだけ??

そうなんです。たったこれだけです。

終わったら早速画像をアップロードしてみてください。数日運用しても問題がなければ本当に対処は完了です。

過去記事の内容が表示されなくなるときは

この処置が原因とは考えにくいのですが、私の管理するサイトで実際に起こったことです。上記の処置で不具合が解消され、ルンルン気分で画像を入れた記事を作成、最終確認でプレビューしたら・・・本文が全く表示されない事態が発生!!

何も関係ない部分のカスタマイズなのに何で??となりました。

他に何も変更してないのですから、コード類やプラグインなども関係ない!!と確信し、一旦テーマを別のテーマに切り替えた後、再び元のテーマを有効化したら解決しました。

ひょっとすると↑のコードで画像の処理方法を変更したことを確実に反映させるためにテーマの再有効化が必要なのかも知れません(推測ですみません・・)

今回紹介する対処を行った方、同じ現象が出ないよう、対応後はサイトの表示チェックを行ってくださいね。


さて、ここから先はこのコードが何をしてるのか?いったいどうしてエラーが出るのか?などを私なりの解釈を含めつつ紹介していきます。

画像アップロード不良の原因はWordPressの画像処理とサーバーの設定との関係

WordPressサイトのメディアから画像をアップロードすると

  1. もとの画像のクオリティを規定値に圧縮した「full」サイズの画像を作る
  2. 1を元にWordPressで指定したサイズの画像(「medium」「thumbnail」)を作る
  3. 1を元にテーマで指定されている独自サイズの画像を作る

こんな処理が行われ、画像のアップロード処理が完了します。

つまりこの流れのどこかで処理できない状態となり、最終的に「HTTPエラー」などと表示されるのです。「HTTPエラー」というのは「ここの部分でエラーが出てますよ!」と明示できない不明なエラーをとりあえず何か表示しないと・・・というメッセージなので、よくトラブル時の確認方法として紹介されている「サーバーのエラーログ」を確認しても、「デバッグモード」にしても表面上には何も表示されないことが多いです。

ではなぜこの処理エラーが起こるのか?でこちらもよく紹介されているのが

  1. 画像の最大アップロードサイズを変更する
  2. サーバーの最大メモリ量を増やす

といった措置。これを行って「なーんだ、解決しないじゃん」とあきらめた方も多いでしょう。

この措置自体は間違いではありません。最近のスマホやデジカメで撮影した写真はビッグサイズですから、1のアップロードサイズの変更が必要な場合もあります。ただ、これでエラーが出てるのであれば「HTTPエラー」ではなく、アップロードを開始した直後に「画像が大きすぎます」などときちんと理由が表示されて処理が止まります。

また、サーバーの最大メモリ量自体はいくらWordPress側で増やしても、サーバーの設定値を超えていれば何の役にも立ちませんから指定しても仕方ない・・ということになります。

それじゃあ根本原因は何?が、WordPressの画像処理とサーバーの設定との関係の問題なのです。

WordPressで画像をアップロードしようとすると↑のような流れで処理が進んでいきます。WordPressにはこれを処理していくプログラムとして「ImageMagik」と「GD」という2つの方法を用意しています。

2つの違いをざっくり説明すると、「GD」というプログラムは古くからあるもの、「ImageMagik」は比較的最近になって開発された画像編集プログラムで、「ImageMagik」は処理が高速になった反面サーバーのメモリやCPU(つまりパワー)を大きく使って処理をします。

そしてWordPressは標準設定でサーバーで「ImageMagik」が動くなら「ImageMagik」で画像処理をするようになっています。

サーバーのパワーに余裕があり、「ImageMagik」で処理しきれれば問題は発生しません。が、たくさんの人が同居している共用サーバー(一般的なレンタルサーバーのプラン)では刻々と状況が変わるため、エラーが出たり出なかったりという現象が出るのです。

今回の対処ではこの順番を変更し、古くても比較的サーバーパワーを使わない「GD」を使いなさいよ!!という指示をするることでエラーが出にくいようにしようというものになります。

ここまで読むと「謎はすべて解けた」って感じですよね??

ただ今回のエラーと原因を受け「このサーバーはクソだな!」と思うのは筋違いです。それはサーバーが「ImageMagik」や「GD」その他の処理に割り当てるリソース(能力)の量を調整しているからです。サーバーにとって何より大切なのは、画像のアップロードなどは収容されているサイトが指示をしたときだけに処理が走るものでではなく、たくさんアクセスがあっても表示させるのに支障が出ないようにすることだからです。

従って同じ価格のサーバーでも現象が出たり出なかったりしますし、サーバーに収容され、同居しているサイトによっても出たり出なかったりしますから、安いサーバーだからダメと一概に言えません。

逆に画像アップロード対策として今回の方法を同居しているサイトすべてが行ったら・・・今度は「GD」側で不具合が発生する可能性もあります。

完全にエラーを回避するには自身の契約に対して1つのサーバーがある「専用サーバー」が一番ですが、高額なのは間違いないですし、それで100%大丈夫ということもないのですから、今お使いのサーバーと上手に付き合うという選択が一番正しいのではないかと思います。

参考資料

How To Fix HTTP Error When Uploading Images to WordPress

WordPressのHTTPエラーの処理方法について(画像をメディアライブラリにアップロードするときの異常)

Choosing your PHP Image Extension for WordPress

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 読み手:星野 邦敏, 読み手:吉田 裕介
¥2,889 (2024/02/08 17:07時点 | Amazon調べ)