3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

エックスサーバーのコマンドラインで `php` だけで特定のバージョンのPHPを実行できるようにする

Last updated at Posted at 2021-08-19

コントロールパネルからバージョンを設定してもコマンドラインには反映されない

エックスサーバーはコントロールパネルからPHPのバージョンを設定しても、コマンドラインでphpとだけで実行すると5系で実行されてしまう。
例えば、コントロールパネルからはPHP7.4を指定してある状態だが、以下のようになる。

$ php -v
PHP 5.4.16 (cli) (built: Nov  1 2019 16:04:20)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

とりあえずの回避策

whereis php を実行すると分かる通り、/usr/bin//opt/ の中にPHPバージョンごとの実行ファイルが存在する。
そのため、以下のようにすれば任意のバージョンで実行できる。

$ /usr/bin/php7.4 -v
PHP 7.4.13 (cli) (built: Dec  6 2020 21:19:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

※ちなみに、/usr/bin/ のPHPは /opt/php-x.x.x/bin/php へのシンボリックリンクである。

なので、Cron等でPHPをバッチ処理する場合などはこの方法で設定するケースをよく見かける。

めんどくさくない?

それ、シンボリックリンクと.bashrcで回避できるよ

エックスサーバーにcomposerを導入したことがある人はこの時点で解決策が見えているかもしれないが、つまりそういうこと。

手順1. 適当なディレクトリにシンボリックリンクを作成

今回は /home/ユーザー名/opt/bin/php というシンボリックリンクを作成する

$ mkdir ~/opt
$ mkdir ~/opt/bin
$ cd ~/opt/bin
$ ln -s /opt/php-7.4/bin/php php

手順2. .bashrcを編集

上記のパスを.bashrcに登録する

vi ~/.bashrc

以下を追記
export PATH=$HOME/opt/bin:$PATH

手順3. 再度SSHでログインし、バージョンを確認

$ php -v
PHP 7.4.13 (cli) (built: Dec  6 2020 21:19:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

以上。

上記の方法だと /opt/bin/ に入れたファイルがコマンドとして認識されるため、自前でインストールしたプログラム(composerなど)も登録することができる。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?