先日、MixhostでLaravelを導入する際にComposerでエラーが出たのでいろいろ調べてみたところ、Composerが求めるPHPのバージョンとMixhostのPHPのバージョンが違うことが判明したので、解決方法の手順を備忘録としてまとめたいと思います。
MixhostではcPanelの「MultiPHP マネージャー」でWebサーバーのPHPのバージョンをドメインごとに変更できますが、これはComposerを実行するために必要なPHPとは別物です。
「PHP-CLIとは」
コマンドラインからPHPを実行するためのプログラムで、Composerを使う時に必要になります。なのでLaravelをインストール・デプロイする時には必要になるかと思われます。
つまりComposerが必要とするPHP(CLI)のバージョンを満たしていないとエラーが出てしまいます。
PHP(CLI)のバージョンの変更について結論からいうと・・・
・MixhostにSSH接続 →
・「/usr/local/bin/ea-php82」 を 「/home/ユーザー名/bin/php」 にコピー (ea-php82はphpにリネーム) →
・~/.bash_profile のパスを「PATH=$PATH:$HOME/.local/bin:$HOME/bin」から「PATH=$HOME/.local/bin:$HOME/bin:$PATH」 に変更 →
・source ~/.bash_profile コマンドを実行
で完了という感じです。
方法1 MixhostでPHP(CLI)バージョンを変更する
変更前のバージョンを確認してみた
現時点のデフォルトのPHP-CLIのバージョンを調べたい場合はcPanelの「ターミナル」にアクセス。
まずは以下のコマンドでComposerのバージョンを調べます。
composer --version
「version 2.6.5」と表示されており最新のLaravel11に対応していることが判明。
php -v
で使用できるPHP-CLIのバージョンが表示されます。ちなみに当方の変更前のデフォルトバージョンは「PHP 7.4.33」でした。最新版のLaravel11では8.2以上が必要です。
whereis php
でPHPが存在するディレクトリを検索します。
「php: /usr/bin/php /usr/local/bin/php /usr/local/lib/php /home/ユーザーネーム/bin/php」と表示されたので、
ls /usr/local/bin/ | grep php
でインストールされているPHPのバージョンを検索。
これでPHP8.2以上が存在することがわかりました。
PHP-CLIが存在するデフォルトのディレクトリは/usr/local/bin/phpなので、好きなPHPのバージョンをユーザー権限のある「/home/ユーザー名/bin/php」に移動してパスを変更したいと思います。
cPanelでPHP(CLI)を変更する手順
cPanelの「ターミナル」に移動します。
cp /usr/local/bin/ea-php82 $HOME/bin/php
でホームディレクトリの「home/ユーザー名/bin/php」にPHP8.2をコピー。
vi ~/.bash_profile
で~/.bash_profileを編集モードにして、以下のよう既存のパスをコメントアウトして新しいパスを追加します。
#PATH=$PATH:$HOME/.local/bin:$HOME/bin PATH=$HOME/.local/bin:$HOME/bin:$PATH
そしてescキーを押して、:wqで入力内容を保存します。(: → w → qの順番にキーを押す)
※入力内容の破棄は:q!で行えます。(: → q → !の順番にキーを押す)
これによりPHPバイナリの参照順が「$HOME/.local/bin」「$HOME/bin」が先に参照され、「$PATH」が後回しになります。
source ~/.bash_profile
で設定を反映させて完了です。
※cPanelの「ファイルマネージャー」から直接編集してもOKです。ファイルマネージャーにアクセスして一番上の「/home/ユーザー名」をクリックすると.bash_profileがあると思うので、選択してツールバーから「編集」ボタンをクリックしてください。
変更が反映されているか確認する
cPanelの「ターミナル」で以下のコマンドを実行して設定が反映されているか確認します。
「which php」でPHPの参照パスが「~/bin/php」と表示され、「php -v」で「PHP 8.2.26 (cli)」が確認できれば成功です。
方法2 コマンドでPHPバージョンを指定して実行
これまでPHP(CLI)のバージョン変更の手順を紹介しましたが、わざわざ変更しなくても
ea-php82 /opt/cpanel/composer/bin/composer install
のように使用したいPHPのバージョンを先頭に付けてComposerの場所を指定するだけで依存関係をインストールできます。
マイグレーションを実行する場合は
/opt/cpanel/ea-php82/root/usr/bin/php artisan migrate
という風にPHPの場所をフルパスで指定して実行します。
composerは自分で適切なPHPを選んで実行できますが、「php artisan」コマンドは正しいPHP実行ファイルのパスを指定する必要があります。
「コマンドの説明」
・/usr/local/bin/ea-php82
PHPのバイナリがあるディレクトリになります。
・/opt/cpanel/composer/bin/composer
サーバーにインストールされたComposerの実行ファイルのパスになります。