Xserver にSSH接続してbashでPHPを動かしたらMariaDBへの接続時にWarningが出たので、その時の事を思い出しながら原因と解決方法の備忘録。
ブロガーでSSH接続する人はほぼ無いと思いますし、SSH接続するような人は自力解決できる方が多いと思いますが、このWarningとXserverというキーワードで原因を調べてもドンピシャでヒットするものがなかったから書いてみた。
PHP Warning: minor version mismatch
Xserver で稼働しているサーバーにSSH接続して、bashでPHPの動作チェックをしてみたら、
[user@sv***** ~]$ php test.php PHP Warning: mysqli::mysqli(): Headers and client library minor version mismatch. Headers:50564 Library:100147 in /home/*/*/*.php on line *
Warning発生。
XserverのサーバーパネルからMariaDBを新規作成して、PHPでDBに接続しようとしていました。
PHP Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
WordPressは正常動作しているのに、なんでこんなWarningが出るの?と不思議に思ったので原因調査です。
PHPとMySQLのバージョン確認
PHPのバージョン確認
まずはPHPのバージョン確認。
[user@sv***** ~]$ php -v PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
Ver.5.4.16。あれ?これは古いですね。
該当ドメインのPHPバージョンをXserverのサーバーパネルで確認してみます。
これは サーバーパネル → PHP Ver.切替 → ドメインを選択 で確認できます。
該当ドメインはPHP 7.4.25で動いているが、SSH接続時は5.4.16が動くのがデフォのご様子。
念のため、インストールされているPHPをwhereisで確認しておきます。
[user@sv***** ~]$ whereis php php: /usr/bin/php /usr/bin/php5.1 /usr/bin/php5.3 /usr/bin/php5.4 /usr/bin/php5.5 /usr/bin/php5.6 /usr/bin/php5.6-cgi /usr/bin/php7.0 /usr/bin/php7.0-cgi /usr/bin/php7.1 /usr/bin/php7.1-cgi /usr/bin/php7.2 /usr/bin/php7.2-cgi /usr/bin/php7.3 /usr/bin/php7.3-cgi /usr/bin/php7.4 /usr/bin/php7.4-cgi /usr/bin/php8.0 /usr/bin/php8.0-cgi /usr/lib64/php /usr/share/php /opt/php-5.4.40/bin/php /opt/php-5.4.45/bin/php /opt/php-5.5.24/bin/php /opt/php-5.6.15/bin/php /opt/php-5.6.18/bin/php /opt/php-5.6.8/bin/php /opt/php-7.0.0/bin/php /opt/php-7.0.3/bin/php /opt/php-5.6.22/bin/php /opt/php-7.0.7/bin/php /opt/php-5.6.24/bin/php /opt/php-7.0.9/bin/php /opt/php-5.5.38/bin/php /opt/php-5.4.16/bin/php /opt/php-5.3.3/bin/php /opt/php-5.1.6/bin/php /opt/php-5.6.30/bin/php /opt/php-7.0.16/bin/php /opt/php-7.1.2/bin/php /opt/php-7.0.17/bin/php /opt/php-7.1.3/bin/php /opt/php-7.0.18/bin/php /opt/php-7.1.4/bin/php /opt/php-7.2.1/bin/php /opt/php-5.6.36/bin/php /opt/php-7.0.30/bin/php /opt/php-7.1.18/bin/php /opt/php-7.2.6/bin/php /opt/php-7.2.14/bin/php /opt/php-5.6.40/bin/php /opt/php-7.0.33/bin/php /opt/php-7.1.27/bin/php /opt/php-7.2.16/bin/php /opt/php-7.1.28/bin/php /opt/php-7.2.17/bin/php /opt/php-7.3.4/bin/php /opt/php-7.2.20/bin/php /opt/php-7.3.8/bin/php /opt/php-7.1.33/bin/php /opt/php-7.2.27/bin/php /opt/php-7.3.14/bin/php /opt/php-7.4.2/bin/php /opt/php-7.4.3/bin/php /opt/php-5.6.40-webp/bin/php /opt/php-7.0.33-webp/bin/php /opt/php-7.1.33-webp/bin/php /opt/php-7.2.29/bin/php /opt/php-7.3.16/bin/php /opt/php-7.4.4/bin/php /opt/php-7.2.34/bin/php /opt/php-7.3.25/bin/php /opt/php-7.4.13/bin/php /opt/php-8.0.0/bin/php /opt/php-8.0.1/bin/php /opt/php-8.0.6/bin/php /opt/php-8.0.7/bin/php /opt/php-7.3.30/bin/php /opt/php-7.4.23/bin/php /opt/php-8.0.10/bin/php /opt/php-7.2.34-2/bin/php /opt/php-7.3.31/bin/php /opt/php-7.4.25/bin/php /opt/php-8.0.12/bin/php /opt/php-7.2.34-3/bin/php /opt/php-7.3.33/bin/php /opt/php-7.4.28/bin/php /opt/php-8.0.16/bin/php /opt/php-8.1.3/bin/php /usr/share/man/man1/php.1.gz
5.1~8.1.3まで導入されています。
MySQLのバージョン確認
次に、MySQLのバージョン確認。
接続しようしたMySQL DBはサーバーパネルから新規作成していて、バージョンはWordPressと同じMariaDB10.5。
[user@sv***** ~]$ mysql -V mysql Ver 15.1 Distrib 10.5.13-MariaDB, for Linux (x86_64) using readline 5.1
こちらは問題なしでした。
PHP Warningの原因
MariaDB Verに対してPHP Verが古いために”Headers and client library minor version mismatch.”とWarning出力されていました。
解決方法
サーバーパネルで確認したPHP Ver.7.4.25で実行すれば解決します。
恒久的にPHPバージョンを切り替える必要がないなら
[user@sv***** ~]$ /usr/bin/php7.4.25 test.php
とフルパス指定してやればいいですね。
でも、これだと手間といっちゃあ手間なので、ln -s でphpというシンボリックリンクを作って利用します。
シンボリックリンクはWindowsでいうとショートカットのようなものです。
[user@sv***** ~]$ ln -s /usr/bin/php7.4 ~/php
次に~/.barshrcに下記1行を追記して、作成したシンボリックリンクへのpathを通します。
vi ~/.bashrcで編集しましょう。
export PATH=~/:$PATH
~/は環境変数$HOMEと同一ディレクトリなので、↓の方がスマートな記述になります。
export PATH=$HOME:$PATH
viを起動したら、
SHIFT + G
o
export PATH=$HOME:$PATH
ESC
SHIFT + z z
と順番にタイプすればよろし。
最後に、.bashrcを更新したのでsourceコマンドでシェルの設定を反映させます。
[user@sv***** ~]$ source ~/.bashrc
これでphpのバージョン切り替え完了です。
[user@sv***** ~]$ php -v PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies [user@sv***** ~]$ [user@sv***** ~]$ vi ~/.bashrc [user@sv***** ~]$ source ~/.bashrc [user@sv***** ~]$ [user@sv***** ~]$ php -v PHP 7.4.25 (cli) (built: Oct 23 2021 09:29:11) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
上記例では~/ という環境変数$HOMEと同一ディレクトリにphpというシンボリックリンクを作ってpathを通しましたが、ディレクトリを作ってそこに入れておいた方がUnixマスターに見られても怒られません。
ブログ・ランキングに参加しています。ポチっと押してから去って頂く方に感謝です。ありがとうございます。
にほんブログ村