どのプラットフォームでも、面倒くさいエラー及び異常が起こりますが、その解決方法を勉強しなければなりません。僕らも全部経験したことがあります!死の白い画面、データベースの接続エラーなど、WordPressには確かに難しいところがありますね。😉しかし、それにもかかわらず大好きですね!今日は、最も一般的な異常の1つであるHTTPエラーについて説明します。画像または動画をWordPressのメディアライブラリにアップロードしようとするときに発生するエラーです。
HTTPエラーは修正しやすいですが、ワークフローを邪魔するものである為、イライラします。ブログ記事に完璧な画像を見つけるのに20分もかかったのに、アップロードしようとすると突然にこの曖昧なエラーが発生するなんて、最悪ですね。
以下では、本エラーが発生する原因と、メディアをアップロードできるようにすばやく解決する方法について説明します。
WordPressのHTTPエラーとは?
WordPressのHTTPエラーは、組込みのメディアライブラリツールを使用して画像及び動画をアップロードしようとしたときに異常が発生したときに発生します。残念ながらWordPressエラーは、HTTPステータスコードを参照できるブラウザエラーとは異なり、トラブルシューティングしにくい場合があります。(特に、WordPressのデバッグモードを有効にする方法がわからない場合はそうです。)
非常に曖昧な「HTTPエラー」というエラー名は、異常原因を特定するのにあまり役に立ちません。異常の考えられる原因はいくつかあり、WordPressが真の原因を特定できない為、一般的なエラーメッセージが表示されます(下記参照)。
WordPressのHTTPエラーの処理方法について
僕らの経験から言えば、WordPressのHTTPエラーの一般的な原因は2つあります。その1つ目はクライアント側のエラー(ユーザー側のエラーともいい、ログインセッション、ファイル名の不正な文字など)で、もう1つはWordPressホスティング会社側の異常あるいは設定異常(サーバー異常、メモリリスト、サードパーティ製のプラグイン、共有ホスティングのリソースがスロットリングすることなど)です。本記事では両方ご説明します。
こちらは、確認事項とエラー処理の推奨事項です(よく発生するものの順で):
- ページを更新する
- ファイルを縮小またはサイズ変更する
- 画像ファイルのファイル名を変更する
- プラグインとテーマを一時的に無効にする
- WordPressホスティング会社に問い合わせる
- PHPのメモリ制限を増やす
- アップロードフォルダのアクセスパーミッションを確認する
- PHPの最新バージョンに移動する
- Imagickと共有ホスティング会社のパフォーマンス異常を処理する
- カスタムメディアライブラリパスを削除する
- mod_securityを無効にする
- Add To Serverプラグインをインストールする
1. ページを更新する
WordPressのHTTPエラーが発生したときに最初に行うべきことは、ブラウザのページを単に更新することです。簡単すぎますね 😉実は、いくら簡単でも、一番一般的な処理方法です。理由は次のとおりです。
まず、何らかの理由でブラウザが一時的にWordPressとの接続を失い、処理が完了していない場合があります。なかっただけかもしれません。接続を失う理由は例えばISP、WordPressホスティング会社の一時的な中断などがあります。ページを更新しもう一度アップロードしようとすると、エラーが解決される場合があります。
または、ページを更新したときに、それとも別のタブからWordPressエディタに戻ったときに、突然ログアウトされる場合があります。理由は、WordPressのログインセッションの有効期限が切れている可能性が高いです。次のメッセージが表示されます:
セッションの有効期限が切れています。前回行った操作の時点からまた続けるにはログインしてください。
当然、ログインし直し、メディアを再びアップロードしようとします。ただし、HTTPエラーが発生します。これはWordPressの課題の一つです。再度ログインすると、手動でページを更新する必要があります。その後に、正常にメディアをアップロードできます。
2. ファイルを縮小またはサイズ変更する
ファイルサイズ(KBまたはMB)を減らすか、幅・高さ(ピクセル)を小さくすることにより、画像ファイルを編集する必要があるかもしれません。ウェブ用に画像を最適化する方法についての当社の詳細な記事を是非ご確認ください。画像をメディアライブラリにアップロードする際に自動的に最適化(ファイル縮小もサイズ変更も)を行うサードパーティ製の画像最適化プラグインが多数あります。
我々は何年もの間、KinstaのウェブサイトでImagifyを正常に使用しました。しかし、それ以外にも便利なものが数多くあります。なお、ローカルではなくプラグインのサーバー上で画像が最適化されることを必ず確認した上で、プラグインを選択してください。ローカルで画像を一括して最適化すると、ウェブサイトのパフォーマンスが大幅に低下する場合があります。
WordPressが応答性のある画像をサポートしているため、高解像度の画像をアップロードすることはOKです。実は、画像が網膜ディスプレイ上にきれいに見えるようそうした方いいでしょう。しかし、高解像度の画像が必要な写真家またはビジネスでない限り、最終的な画像サイズを100 KB未満に抑え、ウェブサイトのコンテンツdivの幅の2倍を超えないようにしましょう。
また、PNGとJPGファイルタイプを組み合わせて方がいいでしょう。画像の種類によりPNGのファイルサイズが大きいかJPGのファイルサイズが大きいか変わります。
WordPressホスティング会社の設定によっては、WordPressの最大アップロードファイルサイズを増やすことも必要かもしれません。
3. 画像ファイルのファイル名を変更する
画像ファイルのファイル名を変えてみてもよいでしょう。すでにアップロードしてあるファイルの場合はWordPressがファイル名に番号を付けますが、うまくいかない場合はファイル名を変えて保存してみましょう。残念ながら、WordPressではすでにアップロードされている画像ファイルの名前を変更することはできません。そのため、ローカルで名前を変更してアップロードする必要があります。
すでに存在する画像をアップロードする場合は、ファイル名に-1または-2を追加することは一般的でしょう。(例:image-file-1.png、image-file-2.png)ダッシュを追加しないと、Googleはファイル名を1つの単語として認識してしまい、SEOが悪影響を受ける場合があります。
また安全のために、特殊文字を含むファイル名の画像をアップロードするのを避けましょう。外国の言語の文字などもそうです。ダッシュはOKです。下記のKinstaのウェブサイトの日本語版の例では、ファイル名に日本語の文字ではなく英語のアルファベットを使用しています。WordPressは漢字をサポートしていますが、それ以外にも異常が発生する場合があります。
4. プラグインとテーマを一時的に無効にする
プラグインを無効にしたり、WordPressのテーマをデフォルトに切り替えたりして、これで問題が解決されるかどうかを確認した方がいいです。可能性の高いプラグインは例えば、画像最適化プラグイン(メディアライブラリに直接結びついている)とWordFenceなどのセキュリティプラグイン(制限が厳しいことがある)です。WordPressテーマを削除するという手もあります。
本番サイトに影響を与えたくない場合は、本番サイトをステージング環境にコピーすることができます。WordPressのHTTPエラーがステージング環境でも発生している場合は、すべてのプラグインをすばやく無効にし、要因を探しましょう。
プラグインを無効にするだけでは、データを失うことはありません。管理画面にアクセスできると、「プラグイン」にアクセスし、一括操作メニューで「非アクティブ化」を選択してください。これにより、すべてのプラグインが無効になります。
これで問題が解決した場合は、要因のプラグインを見つける必要があります。プラグインを1つずつ起動し、画像をメディアライブラリにアップロードしてみてください。HTTPエラーが再発すると、問題のあるプラグインが見つかりました。そこで、プラグインの開発者に問い合わせるか、WordPressリポジトリのサポートチケットを作成することができます。
WordPressの管理画面にアクセスできない場合は、サーバーにFTPで接続し、プラグインフォルダのフォルダ名をplugins_old
などに変更し、ウェブサイトを再度確認してください。正常に動作している場合は、各プラグインを1つずつテストする必要があります。プラグインフォルダのフォルダ名をplugins
に戻し、要因のプラグインが見つかるまでに順番にプラグインフォルダ内の各プラグインのフォルダのフォルダ名を変更してください。もちろん、まずステージングサイトで行ってみてもかまいません。
WordPressテーマも同じです。テーマというのは通常メディアライブラリには関係しませんが、不思議な設定のものもあります。ご利用のテーマをデフォルトのTwenty Seventeenテーマに切り替えると異常が解決されるかどうかを確認しましょう。プラグインと同様に、現在のテーマ設定を失う心配はありません。設定はWordPressのデータベースに保存されています。
5. WordPressホスティング会社に問い合わせる
上記の手順を試してもWordPressのHTTPエラーが発生している場合は、先に進む前にWordPressホスティング会社に問い合わせてみてください。ここから先の手順は難しくて、ホスティング会社に行ってもらうことが可能なはずです。
Kinstaのサポートチームは、MyKinstaダッシュボードの右下のウィザードを使って、24時間365日ご利用いただけます。
6. PHPのメモリ制限を増やす
WordPressのHTTPエラーのもう1つのよくある要因は、サーバーのバックグラウンドアップロードプロセスが正常に完了するために使用可能なメモリが足りないことです。共有WordPressホスティングではよくある問題です。処理方法は、PHPが使用できるメモリを増やすことです。256 MBを推奨します。
Kinstaのお客様のメモリ制限はすでに256 MBに設定されています。WordPressウェブサイトにKinstaをご利用の方はメモリが足りないという問題のご心配が一切無用となります。 👍
wp-config.phpでPHPのメモリ制限を増やす
wp-config.php
ファイルに次のコードを追加することにより、PHPのメモリ制限を増やすことができます。注:これは、WordPressホスティング会社によってサーバーレベルのルールで上書きされる場合があります。
define( 'WP_MEMORY_LIMIT', '256M' );
cPanelでPHPのメモリ制限を増やす
cPanelをご利用の場合は、PHPのメモリ制限を増やすところが2つもあります。
1つ目はソフトウェアセクションにあります。「PHPバージョンを選択」をクリックし、「PHPオプションに切り替える」をクリックします。次に、 「memory_limit」をクリックし、その値を変更します。
2番目もソフトウェアセクションにあります。「マルチPHP INIエディタ」ツールをクリックします。そうすると、php.ini
ファイルを変更することができます。「memory_limit」と表示されている場所までスクロールダウンし、高い値を入力します。
php.iniでPHPのメモリ制限を増やす
cPanelを利用しなくても、アクセス可能であればphp.ini
ファイルを直接編集することができます。これを行うには、FTPまたはSSH経由でサイトにログインし、サイトのルートディレクトリにアクセスし、php.ini
ファイルを開くか作成します。
SSHの接続問題が発生した場合は、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
ファイルがあるかどうかを確認します。
ある場合は、そのファイルを編集し、「php_value memory_limit」の値を変更することができます。
7. アップロードフォルダのアクセスパーミッションを確認する
フォルダのアクセスパーミッションエラーが発生した場合、WordPressがディレクトリに書き込めないというメッセージが表示されるはずです。しかし、表示されない場合もあります。WordPressウェブサイトがハッキングされたまたはマルウェア感染を受けた場合は、パーミッション関係の異常が発生しやすいです。
ヒント:Kinstaでは、すべてのお客様を対象にハックフィックスが無料です。 😄
最も注意すべきフォルダは、メディアライブラリを使ってでアップロードを行うときにファイルが保存される/wp-content/uploads
です。
WordPress Codexによれば、すべてのディレクトリは755(drwxr-xr-x)または750でなければなりません。
FTPクライアントを使用してフォルダのアクセスパーミッションを確認できます(下記参照)。また、WordPressホスティング会社のサポートチームに連絡し、フォルダ及びファイルのパーミッションをすばやくGREPしてもらい、正しく設定されていることを確認することもできます。
このフォルダのアクセスパーミッションを手動で更新する場合は、「サブディレクトリへの再帰」と「ディレクトリのみに適用」の両方にチェックを入れるようにしてください。
8. PHPの最新バージョンに移動する
WordPressはPHP 7.3以上の使用を推奨しています。7.2より旧バージョンをご利用の場合は、CMSの開発者が設定した最低要件を満たしていません!😮
バグ修正または推進されなくなる機能など、セキュリティとパフォーマンスが改善されるため、必ずPHPの最新かつサポートされているバージョン利用することをお勧めします。
PHPの旧バージョンがWordPressのHTTPエラーをはじめいくつかのエラーの要因となることがあります。Kinstaでは、MyKinstaダッシュボードを使ってワンクリックでPHP 8.1に切り替えられます。
cPanelのホスティング会社のご利用の場合は、その会社にはすでにPHPのバージョン間の切り替えのオプションがあるかもしれません。cPanelにログインし、「ソフトウェア」カテゴリにある「PHPバージョンを選択」をクリックします。
そこで、利用可能なPHPバージョンの中から選択します。
9. Imagickと共有ホスティング会社のパフォーマンス異常を処理する
WordPressは、GD LibraryとImagick(ImageMagick)の2種類の画像処理用のPHPモジュールを使用しています。サーバーにインストールされているものによっては、どちらかを使用しています。
ただし、共有WordPressホスティング会社だと、隠れたリソースが舞台裏に数多くあります。これは同じマシンに多くのユーザーを入れるたった一つの方法です。そこでよくある課題は、Imagick(ImageMagick)に割り当てられるリソースが少なすぎることです。ホスティング会社は複数のスレッドの使用を制限し、結果としてWordPressのHTTPエラーが発生します。
次のコードを.htaccess
ファイルの先頭に追加し、スレッドの制限値を高い値に変更することができます:
MAGICK_THREAD_LIMIT 1
もう一つの方法は、WordPressにImagickの代わりにGD libraryを使用するように指示することです。これを行うのに、テーマのfunctions.php
ファイルに次のコードを追加するだけです:
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には上記のような変な制限はありません。ほとんどの場合、PHPワーカー以外の制限は何もありません。ウェブサイトの所有者として上記のようなことについて心配する必要はありません。
Kinstaは、各サイトに対して、LXDで管理されたホストと、LXCソフトウェアコンテナを利用しています。つまり、すべてのWordPressサイトが、それを運営するのに必要なすべてのソフトウェアリソース(Linux、Nginx、PHP、MySQL)を持つ、独自の独立したコンテナに格納されています。 リソースは100%プライベートであり、他の誰かと(それどころか自サイト内でも)共有されることはありません。
Kinstaの独特なホスティングについては、こちらをご参照ください。
10. カスタムメディアライブラリパスを削除する
メディアライブラリのパスが正しく設定されていない可能性があります。ユーザーはローカルの開発サイトを本番環境に移行するときによく発生することです。WordPressダッシュボードの「設定」の「メディア」にファイルパスの値が表示されている場合は、それを削除して「変更を保存」をクリックします。メディアをデフォルトの/wp-content/uploads
フォルダに保存しましょう。
以下はよくある姿です。ライブラリパスが表示されない場合は、この手順をスキップしてください。
11. mod_securityを無効にする
mod_securityはオープンソースのファイアウォールで、時にはWordPressのHTTPエラーを起こす場合があります。mod_securityを無効にするには、.htaccess
ファイルの先頭に次のコードを追加します:
<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
cPanelをご利用の場合は、「セキュリティ」セクションの「ModSecurity」をクリックすることでも無効にすることができます。
次に、対象のドメインの横にある「オン」を「オフ」に変えます。
代わりにSucuriまたはCloudflare などの企業向けでも手頃な価格のWAFを使用することをお勧めします。推奨WAF設定はこちらをご覧ください。
12. Add From Serverプラグインをインストールする
最後になりましたが、本当にどうしようもないときには、無料のAdd From Serverラグインをインストールすることができます。おそらく、WordPressホスティング会社あるいは開発者からのWordPressのHTTPエラーの処理方法についての回答を待っているかもしれません。
Add to Serverプラグインは、エラー回避し、特に重要な作業中の一時的な処理に便利です。もともとの設計目的はSFTP経由で非常に大きなファイルをアップロードすることです。注:このプラグインのサポートは終わっています。自己責任。
まとめ
ご覧のとおり、WordPressのHTTPエラーを処理する方法は数多くあります。うまくいけば、上記の解決策のどちらかを使ってエラーを処理し、メディアをアップロードできるはずです。本エラーが繰り返して発生している場合は、WordPressホスティング会社を切り替えるときがきたかもしれません。Kinstaなら、上記の課題の多くはご心配が一切無用となります!
本リストに載っていない解決策をご存知の方は、是非コメントでも書いて、教えてください。追加いたします。
非常に助かりました。
1の更新ですでに解決されました。ありがとうございます^^
読んでくれてありがとう。 乞うご期待!