WordPressで画像をアップロードしたときに起こるHTTPエラーの対処方法



WordPressで画像をアップロードしたときに「HTTPエラー」と表示されるエラーの解決法について解説していきます。

「HTTPエラー」が出て、画像のアップロードができなくて困っている人は参考にしてください。

HTTPエラーの原因はサーバーの処理限時間越え

画像をアップロードした時に起こるHTTPエラー。
記事投稿のページだとただ単に「HTTPエラー」とだけ表示されるので、何のことか分かりにくいですよね。

ダッシュボードの「メディア」の「新規追加」から画像をアップロードすると、詳しいエラーの原因が表示されます。

そこを見ると、「Fatal error: Maximum execution time of 30 seconds exceeded in /○○(問題があるファイルの場所)」と表示されています。

このエラーは問題が起きているファイルの場所が問題なのではなく、「Fatal error:Maximum execution time of 30 seconds exceeded」という箇所が重要です。

日本語に訳すと「致命的なエラー:最大実行時間である30秒を超えています」となります。

この30秒とはPHPの処理の制限時間で、この場合だと「設定されていた30秒を超えたためPHPの処理を止まり、HTTPエラーになった」ということになります。

HTTPエラーが起こるのは無限ループ対策のため

なんで、こんな制限があるのかというと、PHPのミスコードによる無限ループ対策のためです。

この制限がないと、ずっと処理をし続ける無限ループが起こってしまった時に、永遠に処理を続けてサーバーに負荷がかかり続けてしまいます。

このように無限ループをを避けるためにPHP処理の制限時間を設定しているのです。

実際にHTTPエラーが出ている人であっても、画像サイズが小さいものをアップしてみるとエラーは起こらないと思います。

これは、画像サイズが小さいので、負荷が小さく、制限時間内にアップロードの処理が完了するからです。

HTTPエラーの解決方法はphp.iniの値を大きくする

HTTPエラーの原因が「PHPの処理時間を超えてしまったから」ということは分かったと思います。

なので、HTTPエラーにならないためには、PHPの処理時間を多くすればいいのです。

その処理時間を変更するには、WordPressをインストールしているサーバーの「php.ini」というファイルを変更します。

php.iniのファイルは重要なため、PHPのコードを良く知らない人は、他のコードを誤って消してしまったりするリスクがあります。

そのため、レンタルサーバー側で簡単に設定できるようになっています。
今回はエックスサーバーの画面を使って、説明していきます。

補足

この記事では、エックスサーバーの場合を説明しますが、他のサーバーでも「php.ini」を変更できるようになっていると思います。

まず、エックスサーバーのサーバーパネルにログインします。

中央下部の「php.ini設定」に進みましょう。

設定対象ドメインを選択していない場合は、「ドメイン選択画面」が表示されるので、変更するドメインを選択します。

ここからは「php.ini設定変更」と「php.ini直接編集」という2つのページを切り替えることができるようになり、どちらからでも変更することができます。

この記事ではどちらも紹介しますが、ミスしにくいという理由から、最初に紹介する「php.ini設定変更」から数値を変更することをオススメします。

「php.ini設定変更」から数値を変更する

「php.ini設定変更」に進み、「max_execution_time」の箇所を数値を変更します

初期設定では「30」になっているので、これより数値を大きくしましょう。(「30」は30秒のことです)

ただ、数字が大きすぎればいいというものではありません。
数字が大きければ、それだけ処理にかかる時間の上限が大きくなります。

圧縮をせずに高画質な画像を日常的にアップロードする人は「120」などと数値を大きくした方がいいと思いますが、ほとんどの人は、倍の「60」へ変更するだけで充分です。

「php.ini直接編集」から数値を変更する

php.ini設定変更の横にある「php.ini直接編集」という場所からでも、数値を変更することができます。

こちらも「max_execution_time」と書かれている数値を変更します。

このように数値を変えることで、上限を変えることができます。

書き換える時に、他のコードを消さないように気をつけましょう。

数値を「0」にしないように

max_execution_timeの数値を「0」にすると、制限時間が無制限となります。

万が一無限ループが発生してしまうと、永久に処理し続けることになり、サーバーに高負荷がかかるので「0」と設定しないようにしましょう。

まとめ

HTTPエラーはPHPの処理時間を超えたために起こるエラーで、今回はその上限を上げることによって解決しました。

この設定は一度変更すれば、ずっとそのままなので、サクッと変更しちゃいましょう。

サーバーの負荷をかける時間を少なくするためにも、WordPressに画像をアップロードする前に「Image Optim」などを使って画像を圧縮することをオススメします。

画像の圧縮ツールは「ImageOptim」がオススメ【無料で使えて容量無制限】

2019年4月23日

Amazonギフト券を5000円初回購入すると1000ポイントもらえるキャンペーン実施中【ポイントを受け取るまでの流れを紹介】

2018年3月14日
この記事のタイトルとURLをコピーする
Amazonでお得に買い物

Amazonで海外に行く前に必要なモノを購入されると思いますが、Amazonのギフト券のキャンペーンを利用するとお得です。

このキャンペーンを利用すれば、普通に購入するのに比べて、

  • Amazonギフト券のチャージ金額に合わせてポイントが貯まる(最大2.5%)
  • 5,000円以上のチャージで1,000ポイントがもらえる(初回購入の人のみ)

特に、Amazonプライム会員であれば、ゲットできるポイントの利率が一般会員よりも高くなってお得です。

ぜひこの機会に、キャンペーンを利用して、欲しい物をお得に購入してみてください。

※クレジットカード・電子マネーでのチャージはキャンペーン対象外なので注意