エックスサーバーのWEB管理画面で指定するPHPのバージョンと、SSHでサーバーへ接続した際のPHPコマンドでは、実行するPHPのバージョンが異なります。
今回は、SSHのPHPのバージョンを変更する方法をご紹介します!
PHPのバージョン違いでエラー!?
今やPHPで最も有名なフレームワークである「Laravel」で開発する上で、ComposerやArtisanなどのコマンドによる操作がどうしても必要になりますが、世の中のほとんどのレンタルサーバーではSSHを利用することができません。
しかし、当サイトでも利用していて以前から紹介しているエックスサーバーではそれが可能です!
エックスサーバーはSSLやNginxにも対応しているレンタルサーバーとして、度々紹介しています。
早速、SSHでデータベースを構築するためPHPのArtisanコマンドを試してみました。
すると…
$ php artisan migrate
PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '
何!?
33行目でsyntaxエラーだと!?
とりあえず後回しにしてComposerコマンドで最新にしてみよう!
$ composer update
This package requires php >=7.0.0 but your PHP version (5.4.16) does not satisfy that requirement.
…。
よし!落ち着いてエラーの内容を見てみよう!
This package requires php >=7.0.0 ...
直訳すると「このパッケージはPHP 7.0.0が必要…」
だから、PHP7.0.0以上が必要だぞ!ってことか。
そして、その後ろ。
... but your PHP version (5.4.16) ...
こちらも翻訳すると「…しかし、あなたのPHPバージョンは5.4.16です」だそうです!?
何を言ってるのやら。
実際Laravelが動いてるじゃねーか!
エックスサーバーでのPHPバージョン管理
色々調べていると、そもそもエックスサーバーの管理画面から設定しているPHPとSSHで利用するPHPは異なるとのこと。
こちらのサイトはどちらも詳しいのでどうぞ。
SSHのPHPのバージョンを変更
SSHの接続設定はこちらをご覧ください。
それでは、SSHでPHPのバージョンを変更します。
まずはPHPのバージョンを確認します。
php -v
エックスサーバーでは、OSデフォルトのPHPで入っていると思われます。
以下のコマンドを入力して使用可能なPHPのバージョンを調べます。
find /opt/php-*/bin -type f -name 'php'
ここでは一番最新のPHPを使います。
...
/opt/php-7.1.2/bin/php
/opt/php-7.1.3/bin/php
/opt/php-7.1.4/bin/php
HOME直下にbinディレクトリを作成し、そこにPHPのシンボリックリンクを作成します。
バージョンは先程調べた最新のPHPに変更します。
mkdir $HOME/bin
ln -s /opt/php-7.1.4/bin/php $HOME/bin/php
最後にパスを通すのですが、次回ログインした時も自動的に上記で設定したPHPのバージョンが使えるように設定しておきます。
念のため、.bashrcをバックアップ。
$ cp ~/.bashrc ~/.bashrc.bk
ファイルを開き、編集モードにして、
$ vi ~/.bashrc
最終行に以下を追加。
export PATH=$HOME/bin:$PATH
最後に変更内容を反映します。
$ source ~/.bashrc
以上で、問題なくArtisanコマンドが使用できるようになりました。
お疲れ様でした!
- Original:https://minory.org/xserver-ssh-php7.html
- Source:Minory
- Author:管理者