使用するプラットフォームを問わず、面倒なエラーには遭遇するもの。エラーが発生したら、解決方法を学ばなければなりません。WordPressでは、死の真っ白画面やデータベース接続エラーなどが起こることがありますが、今回は特に一般的なHTTPエラーを取り上げます。具体的には、画像や動画をWordPressのメディアライブラリにアップロードする際に発生します。
HTTPエラーの解決は比較的簡単ですが、業務の妨げになることは間違いなく、ブログ記事に相応しい画像を時間をやっと見つけたのに、アップロードしようしてエラーが発生すれば誰でもイライラします。
このHTTPエラーが発生する原因、そして素早く解決する方法をご紹介していきます。
WordPressのHTTPエラーとは
WordPressで見られるHTTPエラーは、組み込みのメディアライブラリに画像や動画をアップロードしようとして発生するエラーです。WordPressエラーは、HTTPステータスコードを参照できるブラウザエラーとは異なり、トラブルシューティングが複雑になることがあります(WordPressのデバッグモードを有効にする方法がわからない場合は特に)。
「HTTPエラー」という名前も曖昧で、原因を特定する手掛かりとなる情報がありません。このエラーの原因はいくつか考えられ、WordPressでも真の原因を特定できないことから、以下のようにかなりシンプルなエラーメッセージが表示されるだけです(以下参照)。
WordPressのHTTPエラーの原因と解決策
WordPressのHTTPエラーの主な原因は2つあります。1つはクライアントサイドの問題(ログインセッション、ファイル名に不正な文字が含まれるなど)、2つ目はWordPressホスティング会社側の問題や設定ミス(サーバーエラー、メモリ制限、サードパーティプラグイン、共用サーバーのリソース制限など)です。この2つの原因を前提としたトラブルシューティング方法をご紹介します。
以下、効果的な解決策から順番に見ていきます。
1. ページを更新する
WordPressのHTTPエラーが発生した時にまず実行できることは、ページの更新です。
何らかの理由(ISP、WordPressホスティングが原因の一時的な中断など)でブラウザが一時的にWordPressとの接続を失い、処理が完了できなかった可能性があるため、ページを更新して再度アップロードしてみてください。これでエラーがあっさり解決するかもしれません。
あるいは、ページの更新時、または別のタブからWordPressエディターに戻った際に突然ログアウトされてしまうこともあります。これはWordPressのログインセッションの有効期限が切れていることを意味し、以下のようなメッセージが表示されます。
セッションの有効期限が切れています。前回行った操作の時点からまた続けるにはログインしてください
この画面で再度ログインし、メディアを再びアップロードしようとすると、HTTPエラーが発生します。この場合は、ページを更新すると、正常にメディアをアップロードできるようになります。
2. ファイルを縮小またはサイズ変更する
アップロードしようとしているファイルのサイズ(KB/MB)または幅・高さ(ピクセル)を縮小する必要がある可能性もあります。ウェブ用に画像を最適化する方法はこちらでご紹介しています。また、画像をメディアライブラリにアップロードする際に自動的に最適化(ファイル縮小やサイズ変更)してくれるサードパーティプラグインも多数あります。
Kinstaでは、Imagifyを使用していますが、それ以外にも優秀なプラグインは数多くあります。のあ、ローカルではなくプラグインのサーバー上で画像が最適化されるものを選んでください。ローカルで画像を一度に最適化すると、ウェブサイトのパフォーマンスが大幅に低下することがあります。
WordPressはレスポンシブ画像をサポートしているため、高解像度の画像をアップロードすることには問題ありませんが、高解像度の画像が必須でないサイトでは、サイズを100KB未満に抑え、コンテンツのdivタグの幅の2倍を超えないようにしましょう。
また、PNGとJPGは併用することをおすすめします。画像の種類により、PNGの方が大きくなるか、JPGの方が大きくなるかが異なります。
WordPressホスティングの設定によっては、WordPressの最大アップロードファイルサイズを増やす必要があるかもしれません。
3. 画像ファイルの名前を変更する
画像ファイルの名前を変更するという手もあります。すでにアップロードしてあるファイルには、ファイル名に番号が振られますが、うまくいかない場合はファイル名を変更して保存してみてください。すでにアップロードされている画像ファイル名は変更できないため、ローカルで名前を変更してアップロードする必要があります。
すでに存在する画像をアップロードする場合は、ファイル名に「-1」や「-2」などを付けるのが一般的です(例:image-file-1.png、image-file-2.png)。「-」がないと、Googleがファイル名を1つの単語として認識するため、SEOに悪影響を与える可能性があります。
また、特殊文字や日本語のような英語のアルファベットでない文字は避けてください。以下のKinstaの日本版ウェブサイトでは、ファイル名に日本語の文字ではなく英語のアルファベットを使用しています。漢字はサポートされていますが、エラーを引き起こす可能性があります。
4. プラグインとテーマを一時的に無効にする
プラグインを一時的に無効にしたり、WordPressのテーマをデフォルトに切り替えたりするのもトラブルシューティングになります。画像最適化プラグイン(メディアライブラリに連動しているもの)やWordFenceなどのセキュリティプラグイン(厳しい制限が設けられている)は、エラーの原因になることが多く、WordPressテーマに問題がある場合は削除するという手もあります。
これを行うには、本番サイトに影響を与えないよう、本番サイトをコピーしたステージング環境を使用することをおすすめします。WordPressのHTTPエラーがステージング環境でも発生する場合は、すべてのプラグインを無効化して、問題のあるプラグインを特定しましょう。
WordPress管理画面の「プラグイン」ページにに移動し、「一括操作」ドロップダウンから「無効化」を選択すると、すべてのプラグインが無効になります。
これでエラーが解消された場合は、原因がプラグインにあることがわかります。プラグインを1つずつ有効化し、メディアライブラリに画像をアップロードしてみてください。有効化したことでHTTPエラーが再発したプラグインが原因です。プラグインを特定したら、開発元またはWordPressリポジトリのサポートに問い合わせてみてください。
エラーによりWordPress管理画面にアクセスできない場合は、サーバーにFTPで接続し、plugins
フォルダの名前をplugins_old
などに変更し、サイトを再度読み込んでください。これでエラーが解消されている場合は、各プラグインを1つずつテストしていきます。先ほどのフォルダ名をplugins
に戻し、問題のプラグインが見つかるまで、先ほどの要領で順に個々のプラグインフォルダ名を変更します。なお、本番サイトに影響を与えないよう、可能であればこの作業はステージング環境で実行してください。
WordPressテーマも同様です。通常であればテーマはメディアライブラリに影響を与えることはありませんが、可能性はゼロではありません。使用中のテーマをTwenty Seventeenテーマのようなデフォルトのテーマに切り替えて、エラーが解消されるかどうかを確認してみる価値はあります。テーマを切り替えても現在のテーマ設定を失うことはなく、WordPressのデータベースに保存されているため安心です。
5. ホスティング会社に問い合わせる
ここまでの解決策を実践しても、HTTPエラーが消えない場合は、ご利用中のWordPressホスティングに問い合わせてみてください。ホスティング会社が問題解決のサポートしてくれるはずです。
Kinstaでは、コントロールパネル「MyKinsta」からワンクリックでカスタマーサポートに連絡することができます。24時間年中無休で利用可能です。
6. PHPのメモリ制限を増やす
WordPressのHTTPエラーのよくある原因として、サーバーのバックグラウンドアップロードプロセスを正常に処理するために必要なメモリが足りていないことも挙げられます。共用サーバーではよく見られる問題で、この解決策はPHPのメモリ上限を256MBに増やすことです。
なお、Kinstaをご利用の場合、メモリ制限はデフォルトで256MBに設定されているため、次の解決策に移りましょう。
wp-config.phpでPHPのメモリ制限を増やす方法
wp-config.php
ファイルに以下のコードを貼り付けて、PHPのメモリ制限を増やすことができます。注)WordPressホスティング会社によってサーバーレベルのルールで上書きされる可能性があります。
define( 'WP_MEMORY_LIMIT', '256M' );
cPanelでPHPのメモリ制限を増やす方法
cPanelをコントロールパネルとしてご利用の場合は、PHPのメモリ制限を増やす方法は2種類あります。
「ソフトウェア」セクションに移動し、「Select PHP Version(PHPバージョンを選択)」>「Switch to PHP Options(PHPオプションに切り替える)」をクリックします。次に 「memory_limit(メモリ制限)」をクリックして値を変更してください。
別の方法として、同じ「ソフトウェア」セクションの「MultiPHP INI Editor(マルチPHP INIエディター)」を選択すると、php.ini
ファイルを変更できます。「memory_limit(メモリ制限)」と表示されている場所までスクロールして、値を変更してください。
php.iniでPHPのメモリ制限を増やす方法
アクセス可能であれば、cPanelを介さなくてもphp.ini
ファイルを直接編集することができます。これを行うには、FTPまたはSSH経由でサイトにログインし、サイトのルートディレクトリにアクセスして、php.ini
ファイルを開くか作成します。
SSHの接続エラーが発生した場合の解決策はこちらをご覧ください。
ファイルが既に存在する場合は、「memory_limit」設定を検索し、必要に応じて変更します。
一部の共用サーバーでは、上記のphp.ini
ファイル設定が機能するために.htaccess
ファイルにsuPHPディレクティブを追加しなければなりません。これを行うには、サイトのルートにある.htaccess
ファイルを編集し、ファイルの先頭に以下のコードを貼り付けます。
<IfModule mod_suphp.c>
suPHP_ConfigPath /home/yourusername/public_html
</IfModule>
.htaccessでPHPのメモリ制限を増やす方法
.htaccess
ファイルは、サーバーの動作を(ディレクトリレベルまで)変更できる設定を行うことができる特別な隠しファイルです。php.ini
へのアクセス権限がない場合は、このファイルを使用してみてください。FTPまたはSSH経由でサイトにログインし、ルートディレクトリを探して、.htaccess
ファイルがあるかどうかを確認しましょう。
.htaccess
ファイルがあれば、開いて「php_value memory_limit」の値を変更してください。
7. アップロードフォルダのアクセス権限を確認する
フォルダのアクセス権限エラーが発生した場合は通常、WordPressがディレクトリに書き込めないという旨のメッセージが表示されますが、表示されないこともあります。WordPressサイトがハッキングの被害に遭った、またはマルウェアに感染した場合は、このエラーが発生することがあります。補足)Kinstaでは、すべてのお客様に無料のハッキング修正を提供しています。
特に注意したいフォルダは、メディアライブラリでアップロードしたファイルが保存される/wp-content/uploads
です。
WordPress Codexによると、ディレクトリは755(drwxr-xr-x)または750でなければなりません。
FTPクライアントを使用して、フォルダのアクセス権限を確認することができます(以下参照)。あるいは、ご利用中のホスティング会社に問い合わせて、フォルダやファイルの権限設定が正しいかどうか、迅速に「GREP」で確認してもらってください。
このフォルダのアクセス権限を手動で変更するには、「Recurse into subdirectories(サブディレクトリへの再帰)」と「“Apply to directories only(ディレクトリのみに適用)」の両方にチェックを入れてください。
8. PHPの最新バージョンに移行する
WordPressでは、PHP 7.4以上の使用を推奨しており、現在7.3以下を使用している場合は、早急にバージョン変更を行いましょう。
最新バージョンでは、バグ修正や非推奨機能など、セキュリティとパフォーマンスが改善されるため、常に最新バージョンを取り入れることをおすすめします。
PHPの古いバージョンを使用していることがHTTPエラーの原因になっている可能性もあります。Kinstaのお客様は、MyKinstaでワンクリックでPHPの最新バージョンに切り替えることができます。
cPanelを採用するホスティングをご利用の場合も、cPanelから変更できるかもしれません。「ソフトウェア」セクションの「Select PHP Version(PHPバージョンを選択)」をクリックします。
次の画面で、利用可能なPHPバージョンを選択して変更してください。
9. Imagickと共用サーバーのパフォーマンスエラーを解決する
WordPressは、画像処理にGDとImagick(ImageMagick)の2つのPHPモジュールを使用しています。
しかし、共用サーバーを利用している場合は、隠されたリソースが多数あります。これは同じマシンで多くのサイトを稼働するための方法です。そのため、Imagick(ImageMagick)に割り当てられるリソースが少なすぎるというのが課題になりがちです。共用サーバーが複数のスレッドの使用を制限することで、HTTPエラーが発生することがあります。
この場合は、以下のコードを.htaccess
ファイルの先頭に貼り付け、スレッドの制限値を引き上げることができます。
MAGICK_THREAD_LIMIT 1
あるいは、Imagickの代わりにGDを使用するようにWordPressに指示するのも方法です。テーマのfunctions.php
ファイルに以下のコードを貼り付けるだけでOKです。
function wpb_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', 'wpb_image_editor_default_to_gd' );
とはいえ、このような操作が必要になる共用サーバーを利用している場合は、WordPressホスティングの移行を検討することを強くおすすめします。Kinstaにはこのような制限はなく、ワーカープロセス以外のリソースの制限はありません。そのため、このような課題に頭をかかえる必要がなくなります。
KinstaではLinuxコンテナ(LXC)とLXDを採用し、個々のWordPressサイトを必要なソフトウェアリソース(Linux、Nginx、PHP、MySQL)を備えた独立したコンテナで実行します。リソースは完全に隔離されるため、他の人のサイトとはもちろん、自分が運営する他のサイトとも共有することはありません。
Kinstaの他とは違うホスティング環境についてはこちらでご紹介しています。
10. カスタムメディアライブラリパスを削除する
メディアライブラリのパスが正しく設定されていないことも考えられます。これは、ローカルの開発サイトを本番環境に移行する際によく発生します。WordPress管理画面の「設定」>「メディア」にファイルパスの値が表示されている場合は、削除して「変更を保存」をクリックしてください。これにより、メディアがデフォルトの/wp-content/uploads
フォルダに保存されるようになります。
ライブラリパスが表示されない場合は、この手順はスキップしてください。
11. mod_securityを無効にする
mod_securityはオープンソースのファイアウォールです。これがHTTPエラーになっている可能性もあります。mod_securityを無効にするには、.htaccess
ファイルの先頭に以下のコードを貼り付けてください。
<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
cPanelでは、「セキュリティ」セクションの「ModSecurity」をクリックして無効化します。
対象のドメインの横にあるスイッチをオフ(Off)にしてください。
mod_securityがエラーの原因であることがわかった場合は、手頃な価格で利用できるSucuriやCloudflareなどの企業向けウェブアプリケーションファイアウォール(WAF)を使用するのがおすすめです。おすすめのWAF設定はこちらでご紹介しています。
12. Add From Serverプラグインをインストールする
最後に、現在ホスティング会社や開発者からのヘルプを待っている間にできることとして、無料プラグインのAdd From Serverを使用することもできます。
Add to Serverは、エラーが表示されている間にどうしても処理しなければならない重要な作業を行う際に役立ちます。もともとは、SFTP経由で非常に大きなファイルをアップロードすることが目的のプラグインです。注)このプラグインのサポートは終了しているため、使用する場合は自己責任。
まとめ
WordPressのHTTPエラーをトラブルシューティングする方法は多数あります。今回ご紹介した解決策を順に実践してエラーを解消し、メディアを再びアップロードできるようになりましたら幸いです。繰り返しHTTPエラーが発生している場合は、WordPressホスティングの乗り換えを検討する時かもしれません。KinstaのWordPress専用マネージドホスティングなら、このようなエラーに悩まされる時間を大事な事業に充てることができます。
非常に助かりました。
1の更新ですでに解決されました。ありがとうございます^^
読んでくれてありがとう。 乞うご期待!