ColorfulBoxでCLIのPHPのバージョンを変更する方法
ColorfulBoxというレンタルサーバーを使ってPHPのアプリケーションを公開してみました。
レンタルサーバーというものを人生で初めて触れているもので勝手がどうにも分からず、PHPのバージョン変更するだけでもだいぶ手こずってしまいました。
分かってしまえば簡単なことだったので自責の念を込めつつ共有します。
結論
- WebサーバーのPHPバージョン設定とCLIのPHPバージョンは別物
- レンタルサーバーの都合上CLIのPHP実体を変えることはできない
- PATHの順番を弄って自分のホームディレクトリに配置したPHPを利用するようにする
2種類のPHPバージョン
そもそもPHPのバージョンと一口にいっても以下の2種類を考慮する必要があるみたいです。
前者のPHPバージョンについてはColorfulBoxの管理画面であるcPanel上で変更できるようになっています。
CLIのPHPはというと以下のようにPHP 5.6.40がデフォルトで使われていて、このバージョンではcomposerやLaravelのコマンドで色々困ることが出てきます。
$ ll /usr/local/bin/ total 56 lrwxrwxrwx 1 root root 37 Dec 28 17:57 ea-php53 -> /opt/cpanel/ea-php53/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 17:57 ea-php54 -> /opt/cpanel/ea-php54/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 16:59 ea-php55 -> /opt/cpanel/ea-php55/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 16:59 ea-php56 -> /opt/cpanel/ea-php56/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 16:59 ea-php70 -> /opt/cpanel/ea-php70/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 17:57 ea-php71 -> /opt/cpanel/ea-php71/root/usr/bin/php lrwxrwxrwx 1 root root 37 Dec 28 17:57 ea-php72 -> /opt/cpanel/ea-php72/root/usr/bin/php -rwxr-xr-x 1 root root 28264 Aug 10 2017 lsphp -rwxr-xr-x 1 root root 28264 Aug 10 2017 php $ /usr/local/bin/php -v ea-php-cli Copyright 2017 cPanel, Inc. PHP 5.6.40 (cli) (built: Jan 24 2019 18:26:19) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with the ionCube PHP Loader v4.7.5, Copyright (c) 2002-2014, by ionCube Ltd.
かといって/usr/local/bin/php
の実体を他のバージョンにすることもレンタルサーバーの都合上、無理ですよね。
色々と試行錯誤して諦めかけたその時に、神の啓示が...(笑)
(結局はものすごい簡単なことで対応することができました)
方法
まずは/usr/local/bin/
の中にあるPHPの一覧から自分の好きなバージョンを$HOME/bin/
にコピーします。(例ではPHP 7.1)
$ cp /usr/local/bin/ea-php71 $HOME/bin/php #もしくは$HOME/.local/bin/php
次に$HOME/.bash_profile
を編集します。
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs # PATH=$PATH:$HOME/.local/bin:$HOME/bin # 元々はこれ PATH=$HOME/.local/bin:$HOME/bin:$PATH # こちらに変更 export PATH
このように編集することで/usr/local/bin/php
よりも$HOME/bin/php
が先に探索されるようになるので、先ほどコピーしたPHPを利用することができるようになります。
$ which php ~/bin/php $ php -v PHP 7.1.26 (cli) (built: Jan 24 2019 17:47:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.2.4, Copyright (c) 2002-2018, by ionCube Ltd.
追記
書いてて思いついたんですけど、エイリアスとかでも対応できたかも?
$ alias php=/usr/local/bin/ea-php72 $ php -v PHP 7.2.14 (cli) (built: Jan 24 2019 17:28:26) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.2.4, Copyright (c) 2002-2018, by ionCube Ltd. with Zend OPcache v7.2.14, Copyright (c) 1999-2018, by Zend Technologies