はじめに
本記事では、Xserver で SSH 接続した際の PHP のバージョンを変更する手順を書き留めています。
SSH 接続をする方法に関しては公式のマニュアルを参考にしてください。
管理画面で変更した PHP のバージョンは SSH 接続では反映されていない
Xserver では管理画面から PHP のバージョンを変更する機能があります。
ただし、管理画面から PHP バージョンを変更しても SSH 接続した環境では反映されてません。そのため、SSH 接続して何かしらの作業をする際に、最新の PHP が必要になる場合は PHP のバージョンを上げる作業が必要になります。
現在のバージョン確認から変更まで
作業環境
- Windows11(22H2)
- WSL: Ubuntu-20.04 Version 2
.bash_profile にパスを通しておく
$HOME/bin
へのパスが通っていない場合は設定して下さい。記憶が定かではないですが最初から設定されてたと思います…。
$ vi ~/.bash_profile
# ~ 中略 ~
# User specific environment and startup programs
PATH=$HOME/.config/composer/vendor/bin:$PATH:$HOME/bin # ← $HOME/bin が指定されているか確認
.bash_profile
と.bashrc
の使い分けに関しては以下の記事が参考になりました。一読しておくと何をしているのか理解が深まるかもしれません。
PHP のバージョンを変更する
# 現在のバージョンを確認
$ php -v
# phpコマンドのパスを表示
$ which php
~/bin/php # 先頭のチルダ(~)はホームディレクトリという意味
# ファイルやディレクトリを検索する
$ find /opt/php-*/bin -type f -name 'php'
# ~ 中略 ~
/opt/php-7.4.25/bin/php
/opt/php-7.4.28/bin/php
/opt/php-7.4.3/bin/php
/opt/php-7.4.4/bin/php
/opt/php-7.4/bin/php
/opt/php-8.0.10/bin/php
/opt/php-8.0.12/bin/php
/opt/php-8.0.16/bin/php
/opt/php-8.0.6/bin/php
/opt/php-8.0.7/bin/php
/opt/php-8.0/bin/php
/opt/php-8.1.3/bin/php
/opt/php-8.1.6/bin/php
/opt/php-8.1/bin/php
$ ls -la /bin/ | grep php
# ~ 中略 ~
# /opt/ディレクトリ配下にシンボリックリンクがはられている事がわかる
php8.1-cgi -> /opt/php-8.1.6/bin/php-cgi
# 現在のシンボリックリンクを削除する
$ unlink ~/bin/php
# 指定したいバージョンのPHPとシンボリックリンクを貼る
$ ln -s /opt/php-8.1.6/bin/php ~/bin/php
# リンクが設定されているか確認
$ ls -la ~/bin/php
# /home/xxxxxxx/bin/php -> /opt/php-8.1.6/bin/php
# バージョン確認
$ php -v
PHP 8.1.6 (cli) (built: May 18 2022 18:18:39) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.6, Copyright (c) Zend Technologies
find コマンドを使用した検索ですが、 -type f
とすることで検索対象をファイルのみに指定し、-name 'php'
とすることでphp
という文字列を含んだファイルのみ検索します。
$ find /opt/php-*/bin -type f -name 'php'
find コマンドには多くのオプションが存在しますが、オプションで-help
を指定して確認できます。
$ find -help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:
operators (decreasing precedence; -and is implicit where no others are given):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextype
normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
-readable -writable -executable
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls]
-context CONTEXT
actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;
Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <bug-findutils@gnu.org>.
シンボリックリンクとは簡単に言うとショートカットのようなもので、Windows で言うとショートカットフォルダを作成してアクセスしやすいようにしたり、実行ファイルexe
のショートカットをデスクトップに配置してわざわざインストール配下のフォルダまで移動しないで良いようにしたりする機能です。
$ ln -s /opt/php-8.1.6/bin/php ~/bin/php
上記のコマンドを実行することで、/opt/php-8.1.6/bin/php
コマンド本体のショートカットを~/bin/
配下にphp という名前で配置したことになります。
$HOME/bin
というパスは既に通っているので、php -v
などと実行することでバージョン 8.1.6 の PHP が実行されていることになります。