SSH接続でコマンドを操作する際に使用するPHPはCLIといって、通常のwebサイトを表示する時とはちょっと異なるのですが、このコマンド実行時に新しいバージョンのPHPを利用するための手順をまとめてみました。

ちなみにここではPCはwindows、サーバーはエックスサーバー(あるいはシン・レンタルサーバー)という条件になります。

デフォルトのPHPのバージョンを確認する

ますはデフォルトで使えるのphpのバージョンを確認します。

SSHに接続(TeraTerm)したら、「php -v」と打ち込んでみましょう。

$ 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

見ての通り、php5.x系のバージョンがデフォルトで使えることがわかります。

利用可能なPHPのバージョンを確認

次は自分が使用しているサーバーで利用可能なphpのバージョンを確認しましょう。

確認の仕方は二つあり、一つはそのままコマンドにコードを打ち込みます。

コマンドを入力してphpのバージョンをチェック

whereisコマンドでチェック

コマンドに「whereis php」と入力してみましょう。

$ whereis php
php: /usr/bin/php /usr/bin/php5.1 /usr/bin/php5.3 /usr/bin/php5.4 /usr/bin/php5.5
/usr/bin/php7.1 /usr/bin/php7.1-cgi /usr/bin/php8.3-cgi /usr/bin/php7.2 /usr/bin/php7.3-cgi
/usr/bin/php8.1 /usr/bin/php8.3 /usr/bin/php8.2 /usr/bin/php8.2-cgi /usr/bin/php5.6
/usr/bin/php7.0 /usr/bin/php7.2-cgi /usr/bin/php7.3 /usr/bin/php7.4 /usr/bin/php8.0
/usr/bin/php8.0-cgi /usr/bin/php8.1-cgi /usr/bin/php5.6-cgi /usr/bin/php7.4-cgi
/usr/bin/php7.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-5.6.40-3/bin/php /opt/php-7.4.33-2/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.0.33-3/bin/php
/opt/php-8.0.30/bin/php /opt/php-8.2.22/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-8.1.22/bin/php
/opt/php-8.3.7/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.1.33-3/bin/php /opt/php-8.3.10/bin/php /opt/php-8.2.9/bin/php
/opt/php-8.1.29/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-7.3.28/bin/php /opt/php-7.4.19/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-8.2.5/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-5/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
/opt/php-7.3.33-3/bin/php /opt/php-8.1.6/bin/php /opt/php-7.2.34-4/bin/php
/opt/php-7.3.33-2/bin/php /opt/php-7.4.33/bin/php /opt/php-8.0.25/bin/php
/opt/php-8.1.12/bin/php /usr/share/man/man1/php.1.gz

ずらずらと出てきましたが、php7.1やphp8.0といったものがバージョンが使えることがわかります。

findコマンドによる確認

今度はコマンドに「whereis php」と入力してみましょう。

$ find /opt/php-*/bin -type f -name 'php'
/opt/php-5.1.6/bin/php
...
/opt/php-7.0.0/bin/php
...
/opt/php-8.0.0/bin/php
...
/opt/php-8.2/bin/php
/opt/php-8.3.10/bin/php
/opt/php-8.3.7/bin/php
/opt/php-8.3/bin/php

こちらもphpのバージョンがたくさん出てきました。

Xサーバーのコントロールパネルから確認する

Xサーバー(シン・レンタルサーバー)のコントロールパネルから確認する方法もあります。

メニューから「アカウント>サーバー情報」と進み、「コマンドパス一覧」というタブを見てみましょう。

この中でCLIとして記載されてるバージョンが、コマンドに対応しているものとなります。

binディレクトリ作成する

ホームディレクトリにbinディレクトリ作成しましょう。

これは「シンボリックリンク」と呼ばれるものを作成する際に必要になります。

$ mkdir $HOME/bin

mkdirはディレクトリを作成するためのコードです。

もしコマンドでファイルを生成したい場合はtouchを使います。

シンボリックリンクを作成する

binディレクトリを作成したら、シンボリックリンクの設定です。

シンボリックリンクはwindowsでいう「ショートカット」のようなもので、サーバーにインストールされたファイルやディレクトリへとつながっています。

つまりこのリンクのおかげで、コマンドで新しいバージョンのphpが使えるようになります。

$ ln -s /opt/php-8.2.22/bin/php $HOME/bin/php

/opt/php-8.2.22/bin/php」は先ほど確認したバージョンです。

シンボリックリンクを作成したら、次に「パスを通す」という作業が待っています。

シンボリックリンクに対してパスを通す

PATHに設定を追加する

この時点で「php -v」と打ち込んでも、表示されるphpのバージョンはデフォルトままです。

コマンドで新しいバージョンのphpを呼び出すには、シンボリックリンクがある場所にアクセスする必要があります。

$ export PATH=$HOME/bin:$PATH

exportは変数を設定するためのもので、PATHにシンボリックリンクの位置情報を追加してあげます。

パスを通すとは?
ざっくり言うと、シンボリックリンクを経由することによって新しいバージョンのphpを呼び出せるわけですが、そもそもリンクの場所がわからないことにはアクセスできません。
そのため、あらかじめリンクの位置(パス)を登録してあげる必要があり、これを「パスを通す」と呼んだりします。

パスの設定後に「php -v」と打ち込むと、phpのバージョンが上がっていることが確認できます。

$ php -v
PHP 8.2.22 (cli) (built: Aug  5 2024 10:25:13) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.22, Copyright (c) Zend Technologies
-bash-4.2$

ただこのままだと、一度SSHの接続を閉じて、再接続すると設定内容は消え、再びパスを設定し直すことになります。

コマンドを立ち上げるたびに毎回パスを通していては非効率なので、設定を保存してあげましょう。

専用ファイルを生成し、パスの設定を保存する

echoコマンドを使う方法

パスの設定の保存には大まかに二つのやり方があり、一つは設定用ファイルにコマンドから直接追加・保存する方法です。

パスの設定は.bash_profileあるいは.bashrcというファイルに保存します。

まず空のファイルを生成しましょう。

$ touch ~/.bash_profile
$ touch ~/.bashrc

.bash_profileと.bashrcのどちらを用いるかは環境次第ですが、ファイルが作成できたら、コードを追記しましょう。

$ echo '' >> ~/.bashrc
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc

echoは文字列を出力するコマンドで、シングルクォート2つは空の文字列です。

>>は指定したファイルの末尾にデータを追記するもので、~/.bashrcは現在のユーザーのホームディレクトリにある「.bashrcファイル」を指します。

一列目は見やすさのため一行空けておくもので、なくても構いません。

大事なのは二列目で、「export PATH=$HOME/bin:$PATH」を追記するという意味になります。

viエディタで編集する方法

もう一つはviエディタで編集する方法です。

これはコマンドを一度エディタモードに切り替えて、コードを書き込むというものです。

$ vi ~/.bashrc

viで.bashrcをエディタモードで開きます。

export PATH=$HOME/bin:$PATH

エディタモードに切り替わったら、パスを通すためのコードを追記します。

コードを書き込んだら、内容を保存してエディタモードを終了します。

変更内容を反映する

パスの設定をしても、そのまま反映されるわけではありません。

変更内容を反映させるためのコードを打ち込みましょう。

$ source ~/.bashrc

これでSSH接続をし直して「php -v」と打ち込んでもphpのバージョンが変わっていれば、設定変更は成功です。

.bash_profileと.bashrcファイル

.bash_profileと.bashrcファイルの両方を設定する、次のような方法もあります。

#.bash_profile
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
#.bashrc
export PATH=$HOME/bin:$PATH

.bash_profileにより.bashrcファイルが呼び出され、そこからパスが機能します。

過去に設定したリンクファイルを削除する

これは必要かわかりませんが、phpのバージョンが上がるたびにシンボリックリンクを作成していくと、binディレクトリにリンクファイルが溜まっていきます。

ほっといてもいいのですが、何となく気に入らないという人は、古いリンクを削除してしまいましょう。

# unlinkを使う
unlink php7.4
unlink php8.0
# rmを使う
rm php7.4
rm php8.0

unlinkもしくはrmを使う方法の二種類あり、どちらでも構いません。

削除したら念のため「source ~/.bashrc」で設定を更新し、「php -v」でバージョンをチェックしましょう。

以上、CLIのphpバージョンの変更についてでした。