HTTPエラーの場合、Wordpressサーバーとの相性でエラーが発生していることが多い
このHTTPエラーはテーマ導入後に画像を保存するデータベースに上手く画像が入らなかった際に発生します。原因はWordpress移設の際のプラグインによるものと考えられていますが、プラグインを削除しても問題が解決しないこともあるようです。
そこで、いろいろな方がプラグインを削除したり、PHPのコアファイルを編集したり、試行錯誤しているもののそれぞれの環境によって原因が異なることから簡単に解決する方法は定まっていないようです。
今回は網羅的にこの問題の解決法とその原因を検討してみました。結果として、
- PHPの画像処理ライブラリとサーバーとの相性により、
- 特定のライブラリを使用しているプラグインを使用している場合に発生し、
- function.phpに修正のための追加コードを反映することで解決することが判明しました
WordPressテーマのfunctions.phpに追加のコードを導入する方法が最も簡単かつ、安全に解決できますので、こちらをご紹介します。
functions.phpに以下のコードを追加するだけでHTTPエラーは修正できる
修正のためのコードは以下の通りです。
add_filter( 'wp_image_editors', 'change_graphic_lib' ); function change_graphic_lib($array) { return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ); }
HTTPエラーの何を修正しているか簡単に解説します
WordPressにアップロードされた画像は、まずメディアライブラリのデータベースに移動します。ここで、Wordpressは自動的に「サムネイル」、「中サイズの画像」、「大サイズの画像」を生成します。
ここではGDモジュールが一番最初のモジュールとして使用されるのですが、一部のサーバー設定では新しいImagickライブラリでは、ピクセルサイズが過大であるなどの理由で、うまく連携しないことがあるためGDライブラリを強制的に使用するようなコードを使用します。
WordPressでは自動的に画像を処理するためにPHPのライブラリを使用しています
ImagickやGDなど突然難しそうな用語が出ていますが、これらはWordpressを形作っているPHPというプログラミング言語のライブラリ(特定の処理のために有志が作成したショートカットツール)の名前です。
今回のHTTPエラーを修正するためにはGDとImagickというライブラリを使ってます。
GDとは…PHPの画像処理ライブラリ
http://php.net/manual/ja/book.image.php
Imagickとは…GDと同様に、PHPの画像処理ライブラリ
http://php.net/manual/ja/book.imagick.php
ここまで知る必要はあまりないかもしれませんが、身近なHTTPエラーの裏側には、Wordpressを生み出したPHPというプログラミング言語とサーバーとの相性というディープな原因があることがおわかりいただけましたでしょうか。
まとめ
ワードプレスにおける画像アップロード時のHTTPエラーの解決法としては、上記コードを追加するだけ。
参考にしたサイト
How to Fix HTTP Error When Uploading Images?https://wordpress.stackexchange.com/questions/59763/how-to-fix-http-error-when-uploading-images
「HTTPエラー」WordPressでメディアをアップロードできない現象
https://modern-code.com/http-error-symptom-that-media-can-not-be-uploaded-in-wordpress