php -vで表示されるphpバージョンと、phpinfo()で表示されるバージョンが違う対処
2019年02月18日
サーバはkusanagiを利用しているのですが、
phpinfo();
で表示されるphpのバージョンは7系なのに、
サーバにログインして、コマンドラインで
php -v
で表示されるのは、5系というよくわからない事象に遭遇して困ってしまいました。
これで何故困るかというと、Composerをアップデートしたときに、以下のようなエラーが出たからです
このComposerのアップデートには、phpの7系が必要だよ
みたいなエラーです。
しかし、phpinfo()で確認すると使っているPHPのバージョンは7系で、サーバにログインしてコマンドラインで実行している
Composerは5系のPHPを見ているようだという謎です。
調べてみると、KusanagiのPHPは、Webサーバで実行しているのはPHP-fpmというCGI版のPHPで、コマンドラインで実行しているのは、apache経由でモジュール版のphp5系で実行しているとかとういったかんじの現象のようでした。
Kusanagiのサーバでは、rootでサーバにログインして
kuasanagi php7
を実行することでphp7の実行環境に切り替わるようですが、apacheのモジュール版はphp7になっていない??
というよく分からない感じです。
さらに調べると、Kusanagiではサーバにログインして
yum update
で、モジュール版もPHP7に切り替わるといったことが書いてあったので、試してみると、
yum updateでエラー
で、これはサーバのPythonのバージョンを3系に上げていたので、Python2系で書かれているyumがエラーを起こしている様子
これは、いろいろとぐぐることで対応方法が出てきたので、yumのソースで、Pythonのパスが書いてあるところを、
サーバに残っているPython2系へのパスに何箇所か変更します。
これで yum update が実行できました。
これで、満を持して
php -v
を実行。すると、またも
php 5.6〜〜〜
と。え、php7に変わってない・・・?
いったん諦めてから翌日サーバにログインして
php -v
をもう一度実行してみると
PHP 7.3.1 (cli)
と、無事アップデートしてました。
よく分からないですが、yum updateしてからサーバに反映されるのに
時間が必要だった?みたいで、apacheを再起動することで反映されたのか、
よく分かりませんが、何にせよ時間経過で反映されました。
よく分かりませんが、Composerで実行していたPHPは、モジュール版というよりも、CLI版
というPHPのようで、確かにphp -vをすると
PHP バージョン(cli)
と、cliを後についています。
ここのCLI版のバージョンが影響していたようですが、何にせよ今回のケースでは
yum update で無事解決したようです。
この後、
Composer update
を実行すると、無事エラーにならずアップデートを行うことができました。