『7回目の出直し🌻』

好きなことを自分のペースで、のんびり更新

ConoHa WINGでPHPの実行バージョンを切り替える

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