ConoHa WINGのPHPの切り替え方法のメモ
PHP8.0系からPHP8.2系にサーバー全体の設定を変えたら、コマンドラインのPHPバッチプログラムが動かなくなってしまったので、メモ
PHPのインストールパス
ConoHa WINGのサーバーには、複数バージョンのPHPがインストールされています。プログラムの実態は以下のところにあります。
php /usr/bin/php (ユーザー選択) php8.2 /opt/alt/php82/usr/bin/php php8.1 /opt/alt/php81/usr/bin/php php8.0 /opt/alt/php80/usr/bin/php php7.4 /opt/alt/php74/usr/bin/php php7.3 /opt/alt/php73/usr/bin/php php7.2 /opt/alt/php72/usr/bin/php php7.1 /opt/alt/php71/usr/bin/php php7.0 /opt/alt/php70/usr/bin/php
マニュアルにも改定あります
https://support.conoha.jp/wing/faq/website-q/?btn_id=search--results_wing-website-q#1141
ウェブで使うPHPのバージョン指定
ワードプレスなどのウェブアプリケーションとしてPHPを使う場合の設定方法です。ConoHa WINGのコントロールパネルからやります。
PHPのバージョンはサーバー単位で設定するのと、ドメイン単位で設定する方法があります。1つのサーバーで複数のドメインのサイトを運用している場合、変更方法を間違うとサイトが動かなくなることがあるので注意しましょう。
いったんサイトの運用が始まった場合、1を変更するのは事故が起きやすいです。1を変えずに2を変えるのがおすすめです。
コマンドラインで使う場合
ジョブスケジューラ(crontab)でPHPのプログラムを動かすときはどうしたらいいか?
phpコマンドを実行してみるとわかりますが、サーバー全体で指定したPHPが反応することがわかります。うちの場合は8.2系です。
$ php -v PHP 8.2.15 (cli) (built: Jan 17 2024 14:56:21) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.15, Copyright (c) Zend Technologies with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies
コマンドラインで動かす場合、常にサーバー全体の設定のPHPバージョンが選ばれます。仮にドメイン単位で指定してもそのバージョンのPHPが選ばれることはありません。 特定のバージョンで動かしたい場合には、PHPのバージョンを指定したパスをフルパスで指定します。たとえば、PHP8.0系でプログラムを動かしたい場合には、こうなります。
$ /opt/alt/php80/usr/bin/php -v PHP 8.0.30 (cli) (built: Jan 23 2024 15:21:30) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
ジョブスケジューラで定期的にPHP8.0でtest.phpを実行したい場合、ジョブスケジューラのコマンド欄には以下のように書きます。test.phpの場所は適宜かえてください
/opt/alt/php80/usr/bin/php ~/test.php