WordPressをPHP7にしたら激速になったけれども?

徒労日記のサーバが突然リフレッシュされる事になり、PHP 7.0.22+MariaDB 10.0.31になりました。

その結果、これまで7s程度かかっていたトップページのロードが3.6sに大幅削減!

というのはいいのですが、なかなかスムーズには行かないのでメモしておきます。Wordpressのバージョンは4.8.0。

データインポート

旧サーバ

sudo tar cvzf --exclude *.tar.gz ~/20170902.tar.gz /usr/share/nginx/html

sudo tar cvzf ~/backup.tar.gz /usr/share/nginx/html --exclude "*.tar.gz"

–excludeのワイルドカードは”で囲まないと反映されませんでした。

新サーバ

sudo tar xvzf ~/backup.tar.gz -C /

sudo mysql -u root -p < ~/backup.dump

素直に動かしてみると。

はいイラッシャイ。
お決まりのwp-config.phpなど確認しても問題はなし。問題はPHPのバージョンか、はたまた特定のプラグインか。

結局旧サーバで一度全てのプラグインを無効化。再度インポートしたら次は500エラー。/var/log/nignx/dolls.orz.hm/error.logを見ると2つのエラーが。

PHP絡みのエラー

syntax error, unexpected ‘new’ (T_NEW) in

割りと多くの人の事例があがってたエラーです。

2017/08/27 18:03:13 [error] 766#766: *70 FastCGI sent in stderr: "PHP message:
 PHP Parse error:  syntax error, unexpected 'new' (T_NEW) in /usr/share/nginx/html/
wp/wp-content/plugins/db-cache-reloaded-fix/db-module.php on line 214" 
while reading response header from upstream, client: 50.112.194.65, server: dolls.orz.hm, 
request: "GET /?p=10535 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "dolls.orz.hm"

こちらの方の対処を参考にさせてもらいました。

PHPのバージョンを7に上げてみた | 日々のできごと


$GLOBALS[‘g_execphp_manager’] =& new ExecPhp_Manager();

$GLOBALS[‘g_execphp_manager’] = new ExecPhp_Manager();
の様に修正する。同様に、
wp-content/plugins/exec-php/includes/ にある manager.php、admin.php、cache.php、ajax.php 内に記述されている
=& も = に置換すると動くようになる。

何箇所かで使われているので、error.logを見てエラーが出る所を潰しました(あまり箇所は多くない)

Uncaught Error: Call to undefined function mysql_connect()

[error] 766#766: *79 FastCGI sent in stderr: "PHP message: PHP Fatal error: 
 Uncaught Error: Call to undefined function mysql_connect() in /usr/share/
nginx/html/wp/wp-includes/wp-db.php:1570

これはこちらの方の対処を参考に。

PHP7で、mysql_connect()が無いと怒られる件 (undefined function mysql_connect) – Qiita


1、mysql_系関数を mysqli_系関数に書き換える。
例:mysql_connect(。。。)

mysqli_connect(。。。)

こんな処理を繰り返し、なんとかトップページは表示してくれるようになりました。

プラグインの非対応問題

トップページは出るものの、問題はプラグイン。何が原因で「データベース接続エラー」を出していたのかがわかりません。

全部無効化した状態から、必須かつあまりコアな事をしていないプラグインを数個づつ有効化。結果、あるグループのプラグインを有効にすると、DB接続エラーとなることが判明。あとはここから絞っていくわけですが、環境回復するのにインポート以外の手がなく時間がかかりそうです。他の問題もありそうだし、もう少し落ち着いてからにしようと思います。
(DBを直接いじってプラグインを無効化したにもかかわらずエラーが解消できない)

今のところ残っている疑わしいプラグインは以下。

  • All In One SEO Pack
  • Block Referer Spam
  • DB Cache Reloaded Fix
  • Jetpack Post Views
  • WP Multibyte Patch
  • WP Super Cache

ちなみに”WP-Note”はOnにするとトップページのCSSが乱れる事が確定のため無効化中。

おかしい所あれば教えてください

以上、「条件付きで快適」といった状態ですが、新環境なのでこれから色々動作チェックします。もし気になる部分がありましたらコメント欄やtwitterにでもご指摘下さい。

今さしあたってはサイトのタイトルが出てないのが問題ですかね・・・

コメントを残す