【EC-CUBE/XServer】PHPのバージョン切り替え方法(コマンドライン)

XServer(新サーバーパネル)でPHPのバージョンを変更するには、

  1. サーバーパネルのメニューから「PHP」を開く
  2. 「PHP Ver.切替」をクリック
  3. バージョンを変更したいドメインの「編集」をクリック
  4. 変更したいバージョンをプルダウンから選び、「設定する」をクリック

という手順で超簡単にできます。(変更手順詳細は公式サイト こちら にて)

しかし注意が必要なのは、この手順で変更されるのはWebサーバーのPHPバージョン(ブラウザで動作するPHPスクリプト)であり、SSHで使用するCLI(コマンドラインインターフェース)のPHPバージョンは別々に設定されているという点です。このため、CLIでコマンドを実行すると以下のようなエラーが発生する場合があります。

コマンド実行時のエラーメッセージの例

composer detected issues in your platform:

Your Composer dependencies require a PHP version ">= 8.1.0". You are running 7.4.33.

PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 7.4.33. in /home/~~~~~~~~~~~~~~

このエラーは、CLIで使用しているPHPのバージョンが依存関係の要件(PHP 8.1以上)を満たしていないために発生しており、サーバーパネルでPHPバージョンを変更しても反映されません。(同じエラーが表示されてしまいます。)

これは前述の通り、サーバーパネル上でのバージョン変更はWebサーバー(ブラウザで動作するPHPスクリプト)のみが対象で、CLIのPHPバージョンには反映されないためです。

従って、エラーを回避してコマンドを実行するには、CLIで適切なPHPバージョンを指定して実行する必要があります。

なお、現在使用しているPHPのバージョンは以下のコマンドで確認できます。

php -v

適切なPHPバージョンを指定してコマンドを実行する方法

find /usr -name php* | grep binというコマンドを実行すると、指定できるPHPのバージョン一覧が表示されます。
一覧から依存関係が求めるバージョン(上記エラーメッセージの場合: PHP 8.1以上)を選び、フルパスを指定してコマンドを実行してください。

例)PHPのバージョン(php8.3)を指定して、EC-CUBEのキャッシュをクリアするコマンドを実行した場合

/usr/bin/php8.3 bin/console cache:clear --no-warmup

これでエラーを回避して実行できるはずです。

シンボリックリンクを使ってコマンドを短縮する

毎回/usr/bin/php8.3というコマンドを打つのが面倒なので、シンボリックリンクを使って短縮コマンドを作成しておきます。

STEP
ホームディレクトリにbin フォルダを作成(すでに作成してある場合はスキップ)
mkdir -p ~/bin
STEP
php83 のシンボリックリンクを作成
ln -s /usr/bin/php8.3 ~/bin/php83
STEP
~/bin/$PATH に追加(~/.bashrc または ~/.zshrc に追記) bash
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc  # bash の場合
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc   # zsh の場合

~/.bashrc~/.zshrc のどちらを編集すればいいかは、現在使っているシェル によります。以下のコマンドを実行し、結果に応じてコマンドを選択してください。(どのシェルを使うか分からない場合は、両方に追記しておくのもアリです。)

echo $SHELL
  • /bin/zsh~/.zshrc を編集
  • /bin/bash~/.bashrc を編集
STEP
設定を反映 bash
source ~/.bashrc  # bash の場合
source ~/.zshrc   # zsh の場合

例)PHPのバージョン(php8.3)を指定して、EC-CUBEのキャッシュをクリアするコマンドを実行した場合

php83 bin/console cache:clear --no-warmup

このコマンドでも実行できるようになるはずです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!