先日、持っているドメインの「サブドメイン」に、
新しくWordPressをインストールしようとしたのですが・・・・・
どうしても、どーーーしても「データベース接続確立エラー」
と表示されてしまい、インストールが完了しないのです。
親ドメインに、インストールした時は問題なかったのに、
サブドメインにインストールできないのはなぜなんだろう???
インターネットで色々調べても、出てくるのは、
「データベースへの接続情報をもう一度確認してみましょう」
というお話ばっかり。。。
「データベースへの接続情報は問題ないっちゅうねん!」
よくある、レンタルサーバーのマイページにある【データベース情報】をコピーした際に
”余計な空白も一緒にコピーしちゃった”
ということでもないのです。
何度確認しても、データベース接続情報は合っているし。。。
何が悪いんだろう・・・トホホ・・・
と、まぁその後、結果的に解決したのですが、
「あ~でもない、こ~でもない」
と、あらゆる事を確認したのに、その解決方法とは
「なんだよ~~。。。」
というものでした。
もしかしたら、同じ悩みを抱えている方もいるかもしれませんので(いないかっ!)
一応、このページ内に記しておきます。
参考にしていただければ幸いです!
※ちなみに、レンタルサーバーはロリポップです。
目次
データベース接続情報の登録までは問題なし
- サブドメインに割り当てたディレクトリにWordPressの各ファイルをコピー
- 「wp-config.php」にDB名、ユーザ名、パスワード、ホスト名を記述
- http://サブドメイン.ドメイン/wp-admin/install.phpでインストール開始
と、ここで上の図のような「データベース接続確立エラー」が表示されるのです。
試しに、「http://サブドメイン.ドメイン」と入力してみると・・・。
やっぱり、「データベース接続確立エラー」となります。
サブドメインが反映されていないかDNSか
もしかして、サブドメインがまだ反映されていないのかも・・・
いや、DNSに何か問題があるのか・・・
そこで、サブドメインのディレクトリ直下に、テスト的に
”テスト”と1行書いた「index.htm」
を配置してみます。
すると・・・
”おやっ!ちゃんと表示されるやないかい”
ということは、サブドメインは反映されているし、DNSも問題はない。
そもそも、サブドメインの反映がまだ完了していなかったり、DNSの問題なのであれば、
「404エラー(ページが見つかりません)」
となるはずです。
サブドメイン上のWordPressから、きちんとデータベースに接続しに行っている・・
ということは、サブドメインへのアクセスは上手くできているわけかぁ。。。
WAFを疑ってみた
たぶんないだろうなぁ・・・と思いつつ、
一応これも調べてみました。
ロリポップでもしばらく前に、導入されたものがあります。
それは、「WAF(ワフ)」です。
これは、「Web Application Firewall(ウェブアプリケーションファイアウォール)」の略で、
アプリケーションサーバ(この場合、WordPressがインストールされたサーバ)の直前で、不正アクセスや攻撃を検知するためのシステムです。
つまり、「WAF」よりも前面のネットワークレベルに設置されている
「セキュリティ機器(ファイアーウォールやIPSなど)」で、不正アクセスや攻撃などを防御できなかった場合に、このWAFが立ちはだかって、ブロックするわけです。
しかし・・・。
そもそも、アプリケーションサーバまでは到達できていて、そこから先のデータベースサーバへの接続を試みた時にエラーが出るわけです。
データベースサーバへ外部から接続できるわけではありません。
おそらく、ロリポップで構築しているネットワーク内のアプリケーションサーバからの接続しか受け付けないはずです。
つまり、WAFを有効にすることで何か問題があるのなら、
アプリケーションサーバ、つまりWordPressが動くはずがないのです。
そう、「データベース接続確立エラー」すら返すはずがないということですね。
さぁ、困った…と、ロリポップのヘルプを調べていると
ロリポップは「マルチドメイン」を設定できるので、別のドメインもいくつか登録していました。
他に登録していたドメインの1つで、サブドメインを作ってテストしてみたのですが、
やはり、同じようなデータベース接続エラーとなります。
でも、だいぶ前にサブドメインで作ったサイトは、きちんとWordPressが稼働したんだよなぁ。
ロリポップ側で何か制限をかけたのだろうか???
いよいよもって、もう何が何だか見当もつかなくなりました。
とりあえず、制限をかけているのなら、何かロリポップのヘルプに載っているかもしれない、と思い
色々調べていると・・・ありました。
こんなページを見つけたわけです。
PHP7.1利用のドメインで簡単インストール、サイト表示ができません。
ん??
PHP??
「PHP」とは、アプリケーションサーバ上で動くプログラムの事で、
このプログラムがあるおかげで、日々何も気にせず「WordPress」が使えるのです。
つまり、WordPressを使うなら”なくてはならないもの”というわけですね。
ただ、自分の家などでアプリケーションサーバを構築しているなら話は別ですが、
レンタルサーバを利用しているのなら、利用者はほとんど意識せずにPHPを使うことができるのです。
つまり、当たり前すぎて「PHP」の存在を忘れていました。
なになに…..PHP7.1のバージョンを使う場合、
「セキュリティレベルが高いデータベースへの接続方法を採用」
う~ん、これだな(苦笑)
早速、ロリポップの管理画面を確認してみます。
「サーバの管理・設定」から「PHP設定」をクリックします。
管理している各ドメインやサブドメインの一覧が表示されます。
PHPは、ドメインごとに使用するバージョンを指定できます。
新しく、ドメインもしくはサブドメインを登録すると、
「PHPのバージョンは最新の7.1になる」
ということです。
今回、新たにサブドメインを登録したので、このサブドメインには「PHP7.1」が割り当てられたわけです。
上の図のように、各ドメインの中で、「PHP5.2」などのバージョン5がいくつかありますが、
これらのドメイン上でWordPressをインストールした場合、データベース接続エラーは出ません。
PHP7.1を使う場合だけ、データベースへの接続方法がこれまでよりも高セキュリティなので、接続エラーが出ていたわけですね。
データベースパスワードを再設定する
さて、それでは「PHP7.1」でもデータベースサーバに接続できるようにしましょう。
先程のロリポップのヘルプページの中に解決方法が書かれています。
PHP7.1利用のドメインで簡単インストール、サイト表示ができません。
これによると、データベースサーバの接続パスワードを再設定するだけです。
しかも、これまで使ってきたパスワードと同じでもよいようですね。
「サーバの管理・設定」の「データベース」から、「パスワードの再設定」ボタンをクリックします。
「新しいパスワード」と「新しいパスワード確認」にパスワードを入力します。
今まで使ってきたパスワードでもOKです。
というか、違うパスワードにすると、各WordPressの「wp-config.php」を書き換えなければならないので、同じ方が面倒がなくていいです。
入力ができたら「パスワードを再設定する」をクリックして完了です。
まとめ
「PHPの設定」は、全然目に入らなかったですねぇ(笑)
だいぶ、時間を費やしましたが、分かってみたら
「なんだぁ~」
という感じでした。
セキュリティの観点からも、
PHPのバージョンは、最新のものを使った方がいいでしょう。
データベースのパスワードを再設定すれば、後は問題ないので、
今一度、持っているドメインのPHPバージョンをチェックしておくことをお勧めします。