開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

WordPressが真っ白!表示されない!エラー対応まとめ

最終更新:2017-08-18 by Joe

みんなの味方、Wordpress。

でも、初期設定がすんでから、ちょっと変えようと思っていじっていら、「あれ?!真っ白になった!」「エラー?なぜ、なぜなの?」「うわー」となることは、不慣れなWordpress開発者にとって、非常に良くあると思います。

そんなときの診断方法と、対応方法をまとめてみました。困っているあなたの助けになれば幸いです。

画面が真っ白/エラーな時、考える順番

この記事は「基本編」ということで、例外ケースもあるかもしれないですが、だいたい下記が確認できると、普通はちゃんと動いていると思います:

  1. 設定したドメインは、ワードプレスが配置されたディレクトリを参照していますか?
  2. ワードプレスのルートディレクトリにある「.htaccess」(=ウェブディレクトリの設定ファイル)の設定は正しいですか?
  3. 設定したテーマディレクトリは、きちんと参照できていますか?
  4. プラグインなど、余計なファイルがエラーを起こしていないですか?
  5. テーマ内のテンプレート選択処理は正しく機能していますか?選択されていますか?

なお、ウェブサーバー(Apache)がすでに正常に動いていることは大前提です。(XAMPの人は、見ればわかりますよね。)

1)設定したドメインは、ワードプレスが配置されたディレクトリを参照していますか?

「Wordpressのルート」とは、WordPressのディレクトリにある、index.phpや、wp-config.phpがあるディレクトリを意味しています。これはすごく簡単にテストできます。

ドメインの参照ディレクトリと、WordPressの配置されたディレクトリが一致する場合

WordPressのルートディレクトリにtest.htmlを作成して、配置してください。ファイル内に「ワードプレス大好き」と書いてください。(なんでも構いません)

あとは、ブラウザに、「http://<あなたのドメイン>/test.html 」といれて、アクセスすれば、すべてがわかるでしょう。「ワードプレス大好き」と表示されれば、このテストは成功です。表示されなければ、あなたのドメインがどのディレクトリを参照するかの設定は間違っています。

レンタルサーバー環境

契約したアカウントでログインできるコントロールパネルに、ドメインが参照するディレクトリの設定する場所がを確認しましょう。ケースによっては、変更が反映されるまで少しだけ時間がかかることがありますので、慌てないでください。

自分でWebサーバー(Apache)を動かしている環境

すこし確認項目が多いでしょう。でも、すごく基本的な設定なので、落ち着いてやればだいたい大丈夫です。まずバーチャルホスト設定が誤っていることになりますので、apacheの設定ファイル「httpd.conf」 から参照されているバーチャルホスト設定ファイル (extra/httpd-vhost.confなど)で、ドメインアクセスのディレクトリ参照の設定が正しいことを確認してください。

あとは、apacheは、他にも関連する設定があるから、このテストがうまくいかな場合は、ググって設定項目を確認して下さい。

とにかく、test.htmlを表示できるところまで、行ければ、先に進みましょう。

WordPressをサブディレクリに配置している場合

これは、例えば、http://<あなたのドメイン>/blog/といったアドレスでWordpressを公開している時です。

こちらも、容量は上記と同じです。ただし、http://<あなたのドメイン> にアクセスした時、そのドメインが参照するディレクトリ(WordPressルートとは異なるはずです)に、test.htmlを配置して、上記と同じテストをして下さい。

 

WordPressをサブディレクリに配置していて、でも公開URLはルートディレクトリの場合

これは、例えば、「http://my-wordpress.jp」が~/my-web-dir/を参照しているが、Wordpressルートは「~/my-web-dir/wordpress/」にあるというパターンです。

これはすこしトリッキーな設定パターンで、初心者は本当にエラーでまごつきやすいケースだと思います。(個人的には、あまり初心者にはおすすめしません。)ワードプレスの公式ドキュメントにも、その設定やり方が書いてあります。

上記のページの警告にあるように、手順を待ちがえると、すこし面倒な事になります。これはデータベース内のoptionsテーブルにある、siteurl, homeというURL文字列を格納するレコードが誤って更新されるとこで、WordPress管理画面自体がアクセス不能になってしまう場合があるからです。

しかしながら、そのような場合でも、phpmyadminや、直接SQLコマンドでsiteurlや、homeの値を書き換えて修正することができれば(もしあなたがそれができれば・・)復帰することが可能です。phpmyadminは、一般的なレンタルサーバーであれば、必ずインストールされているはずですので、コントロールパネルを探して下さい。もし、自分のサーバであれば、自分でインストールする必要があります。

 

さて、ここで行うテストは、やはり、上述のものと同じです。

「~/my-web-dir/wordpress/text.html」を配置して、とにかくアクセスしてみることです。みてください。ブラウザから、http://my-wordpress.jp/test.html がアクセスできれば、ドメイン設定は大丈夫です。あとは、上記のマニュアルに従って設定すれば問題ないです。

このケースで覚えておくのは、DB内の値は、

  • homeは: http://my-wordpresss
  • siteurlは: http://my-wordpress/wordpress

のように、それぞれ違う場所を格納しておく必要がある。という事です。

これは、「home」は、サイトの閲覧者がアクセスすべきURL、「siteurl」は、ワードプレスルートディレクトリを見つける為の値。という仕様になっているからです。テーブル名は「接頭辞_options」です。

困ったらこれをphpmyadminなどから確認してください。

 

2)ルートディレクトリにある「.htaccess」の設定は正しいですか?

「.htaccess」とは、Apacheのウェブディレクトリの設定ファイルのことです。このファイルによって、ディレクトリ(と、デフォルトではサブディレクトリも)のアクセスできるかどうかを設定できます。

もしあなたの症状が「500 (Internal Server Error)」もしくは、「403 (Forbidden)」であれば、これの疑いが大きいです。(そうではなく、真っ白な画面であれば、このhtaccessの確認をスキップしてもいいかもしれません。)

まず最も簡単なのは、htaccessのバックアップを取った後に、疑いのある行を全部削除して下さい。もしウェブサーバーとして動作するようになれば、設定の誤りにより500が引き起こされている可能性が高いです。

もし複雑なhtaccesである場合、ログを見るのが一番です。レンタルサーバーでもログを吐く設定ができるので、みてみてください。エラーであれば、エラーログが出力されているはずです。面倒がらずに、エラーログを設定してください。

あとは、ルートのhtaccessの末尾にredirect / https://googole.comとでも書いてください。転送が起きれば、その行まではhtaccessは正常に実行されています。

3)設定したテーマディレクトリは、きちんと参照できていますか?

なぜか「真っ白」画面のひとは、これが原因の可能性が大きいです。

たぶん、あなたは、/wp-adminに入れるはずですので、テーマを再設定して、保存ボタンを押しなおしてください。それによって、データベースのoptionsテーブルに入っている、テーマディレクトリのパスの値が更新されるはずです。

テーマやプラグインは、また、テンプレートファイルなどは、ディレクトリパスがデータベースに格納されてているので、参照エラーを起こしてしまう事があります。サイトの引越しや、テーマ開発時によく起きる症状だと思います。

4)プラグインなど、余計なファイルがエラーを起こしていないですか?

管理画面でプラグイン一覧を表示させてください。エラーがあれば、勝手に強制終了してくます。

注意が必要なのが、管理画面実行時に動作するプラグインです。こいつがエラーを起こすとエラーのせいで、管理画面が表示できなかったり、操作できなくなったりする事があるので、その場合は、phpmyadmを利用して、有効化されたプラグイン設定レコードを削除するか(初心者にはおすすめしません)もしくは、プラグインディレクトリにあるプラグインを(wp-content/plugins)から直接プラグインディレクトリを削除してください。

どれが悪いかわからない時は、怪しいものから一つずつ削除して、確認しながらすすめて下さい。

5)テンプレートは正しく選択されていますか?

トップページは表示されるけど、下層ページが404(Not found)の場合、これは、WordpressのURLを処理する際のエラーであるこ可能性が大きいです。もしくは、何も出力しない(開発途中の)テンプレートが選択されてしまったり、出力する前にテンプレート上の処理がエラーで停止してしまえば、真っ白な画面が表示される事になります。

ワードプレスのURLは「Rewrite」という仕組みによってハンドルされます。これは、URLの文字列によって、処理が分岐し、取得する投稿が変化したり、適切なテンプレートが選択されたりする仕組みです。

こちらを確認するには、管理画面 > 設定 > パーマリンク設定 にいって、なにもせずに「保存」を押してください。

この時、裏でflush_rewrite_rule() という関数が実行されるのですが、これが重要で、パーマリンクの設定を一旦リフレッシュしてくれます。

もしソースコードを変更できるなら、適応な場所(正確には、after_setup_themeフックの後)でflush_rewrite_rule();を実行足てやれば同じ効果が得られます。

ただし、公開するテーマにでは、この関数を書かないで下さい。あくまでテスト目的です。

flush_rewrite_ruleは、DBにアクセスしすべてのRewrite Rule(URL文字列をハンドルする設定)を計算しなおして、DBのレコードに更新をかけるので、このまま公開すると、1ユーザが1アクセスするたびに、毎回、無駄に高価な処理により、大きな負荷が発生しつづけることになってしまいます。

 

どうでしょうか。なにか改善はみられたでしょうか。

走り書きでごめんなさい。いったん以上です。

まだちゃんと網羅できてないので、あとですこしずつ直します。

 

閉じる