wordpress の引っ越し作業で画面真っ白の対処

wordpress の引っ越し作業で画面真っ白の対処

mysql データを MariaDB へインポートできたので
次にvirtualhost の設定

vim /etc/httpd/conf.d/wp.developapp.net.conf

というように
ドメイン名.conf
というファイルを作成

内容は

<VirtualHost *:80>
    ServerName wp.developapp.net
    DocumentRoot /var/www/html/wp.developapp.net
    ErrorLog logs/wp.developapp.net-error_log
    CustomLog logs/wp.developapp.net-access_log combined env=!no_log
</VirtualHost>

保存したら

systemctl restart httpd

で apache を再起動

しかし
お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

と表示される

エラーで検索し
CentOS7 PHP7.1.2 お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

を参考に

php -m | grep mysql

を実行しても何もでないので

yum install yum-utils
yum-config-manager --enable remi-php71
yum install php-mysqlnd

で必要なパッケージをインストール後

php -m | grep mysql

を実行し

mysqli
mysqlnd
pdo_mysql

がでたのを確認したら

systemctl restart httpd

で apache を再起動したけどかわらず

おそらく wordpress のバージョンが古すぎることが原因

とりあえず

wget http://ja.wordpress.org/latest-ja.zip

で最新のwordpress をダウンロード

mv wordpress /var/www/html/wp.developapp.net
chown -R apache:apache /var/www/html/wp.developapp.net/
cd /var/www/html/wp.developapp.net/
cp wp-config-sample.php wp-config.php
vim wp-config.php
systemctl restart httpd

今度は
データベース接続確立エラーになった

ログインユーザに問題があるとおもい
wordpress ユーザで mysql でログインしようとしてもできないので
サーバー移動による hostname があやしいと思い

root で mysql にログインして調べたら

select host,user from mysql.user;

を実行すると
host が % になっている

念の為

 show variables like 'hostname';

で hostname もみてみたら
やはり違っている

このあたりから調べることに
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user ‘snowpool’@’localhost’ (using password: YES) in /var/www/html/wp.developapp.net/wp-includes/wp-db.php on line 1531

つまり ユーザに問題がありそう

MariaDB(MySQL)の基本的なユーザー系コマンド

で調べ

SELECT user,host FROM mysql.user;

でユーザ一覧をみたら

ユーザは存在しているけど
root 以外は

SHOW GRANTS FOR ''@'hostname';

で権限を確認しても

ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host 'hostname'

となるし

ログインしようとしても

ERROR 1045 (28000): Access denied for user 'snowpool'@'localhost' (using password: YES)

となってしまう

Hostを指定しないで作ったuser1はHostが「%」になっているので
とあるので
https://teratail.com/questions/45324

MySQLの権限の確認や外部からのアクセス

に権限について載っているのをみると

どうやら、host の指定をしていないのが原因っぽい

とりあえず権限の確認

show grants;

で現在のユーザの権限が確認できる

root ユーザに関してはログインしてコマンド実行することでみれたけど
wordpress のユーザはログインすることができかったため

DBの破損の確認をしたいので

テーブルが壊れているかと思ったので、mysqlcheckで修復したときのメモ

を参考に

mysqlcheck -c -u root -p --all-databases

を行ったところ
すべてOKで破損はなし

SELECT user,host FROM mysql.user;

でユーザ一覧をだしてみたけど
host が % になっているのでたぶんこれが原因っぽい

一度、移行前のサーバーへ ssh ログインし

show grants for 'snowpool'@'%';

では権限確認できるのに対し

インポート先の MariaDBで

show grants for 'snowpool'@'%';

だと

ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host '%'

となる

MySQL] MySQL5でHostに’%’があるとリモート接続できない?

によれば
host に % にするのは mysql のワイルドカードで
どこからの接続でも許可するというもの

今使っているDBが MariaDB
最初は権限やセキュリティの仕様が違うのかとおもったけど
マシンのホスト名やOSが違うため

slaveの再設定、追加(オンラインバックアップ)

をみてみたら

別サーバーで、レプリケーションが行われているmysqlからダンプして
フルバックアップファイルを利用して、slaveを設定しなおす場合に、
mysqlの接続アカウント情報も書き変わってしまう。

そのため、元々masterに設定されていた接続アカウントと
ダンプファイルのアカウント情報が違う場合には、アカウント情報を再設定してあげる必要がある。

とのこと

ということで再度アカウントを別のもので作成して実験

grant all privileges on wp_my_wordpress* to snowpool@localhost identified by "password";

これで wp-config.php の設定を変更したけど画面が真っ白

念の為

mysqldump -u root -p wp_my_wordpress > wordpress.sql

でバックアップを作成しておく

なお復旧させるときには

create database wordpress;

で新規作成

 mysql -u root -p wordpress < wordpress.sql 

でインポートすれば復旧可能

 mysqlcheck -c wordpress -u root -p

で破損をチェックしOKを確認するのも忘れずに

なお、画面が真っ白になった原因は
最新のwordpress にした場合、該当するテーマがないため
wp-config.php での設定をせず
ドメインにアクセスし、ブラウザからインストールし
ダッシュボードへログインしてテーマ設定をすれば
wordpress の表示がされるようになります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です