問題:
composerでphpoffice/phpspreadsheetをインストールしたいが、PHPバージョンが低すぎてインストールできない。
XサーバーのUI画面で変えられるPHPバージョンはWEBで動作するPHPバージョンであり、CLIのPHPバージョンは変えられない。
[ xs000000@sv00000 ~]$ composer require phpoffice/phpspreadsheet
Warning from https://repo.packagist.org: Support for Composer 1 will be shutdown on August 1st 2025. You should upgrade to Composer 2. See https://blog.packagist.com/shutting-down-packagist-org-support-for-composer-1-x/
[InvalidArgumentException]
Package phpoffice/phpspreadsheet at version has a PHP requirement incompatible with your PHP version (5.4.16)
//略
Package phpoffice/phpspreadsheet at version has a PHP requirement incompatible with your PHP version (5.4.16)
がその警告だ。
ls /usr/bin/php*
で使えるバージョンを確認し、php7.4 -v
で変えようとしたが、失敗した。バージョンはそのままだった。
[ xs000000@sv00000 ~]$ ls /usr/bin/php*
/usr/bin/php /usr/bin/php-fcgi7.0 /usr/bin/php-fcgi8.2 /usr/bin/php5.6-cgi /usr/bin/php7.2 /usr/bin/php8.0-cgi /usr/bin/phpize
/usr/bin/php-cgi /usr/bin/php-fcgi7.1 /usr/bin/php-fcgi8.3 /usr/bin/php54 /usr/bin/php7.2-cgi /usr/bin/php8.1
/usr/bin/php-fcgi5.1 /usr/bin/php-fcgi7.2 /usr/bin/php5.1 /usr/bin/php54-cgi /usr/bin/php7.3 /usr/bin/php8.1-cgi
/usr/bin/php-fcgi5.3 /usr/bin/php-fcgi7.3 /usr/bin/php5.3 /usr/bin/php7.0 /usr/bin/php7.3-cgi /usr/bin/php8.2
/usr/bin/php-fcgi5.4 /usr/bin/php-fcgi7.4 /usr/bin/php5.4 /usr/bin/php7.0-cgi /usr/bin/php7.4 /usr/bin/php8.2-cgi
/usr/bin/php-fcgi5.5 /usr/bin/php-fcgi8.0 /usr/bin/php5.5 /usr/bin/php7.1 /usr/bin/php7.4-cgi /usr/bin/php8.3
/usr/bin/php-fcgi5.6 /usr/bin/php-fcgi8.1 /usr/bin/php5.6 /usr/bin/php7.1-cgi /usr/bin/php8.0 /usr/bin/php8.3-cgi
[ xs000000@sv00000 ~]$ php7.4 -v
PHP 7.4.33 (cli) (built: Aug 15 2023 10:32:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[ xs000000@sv00000 ~]$ php -v
PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
原因:
php7.4 -v
で失敗したように見えたが、失敗していない。ただし、すべてのスクリプトやコマンドがこのコマンドに指定されたPHPで実行されるわけではない。
現在、/.bash_profileの環境変数 PATHで指定されたディレクトリを左から順に、実行ファイルを探している。/usr/bin/php7.4ではなく/usr/bin/phpが実行ファイルになっているため、明示的に指定する必要がある。
解決策:
ホームディレクトリ配下に/usr/bin/php7.4
を指す実行ファイルのシンボリックリンクを/home/xs000000/bin
に作成する。
[ xs000000@sv00000 ~]$ mkdir $HOME/bin
[ xs000000@sv00000 home]$ ln -s /usr/bin/php7.4 $HOME/bin/php
[ xs000000@sv00000 home]$ ls -l /home/xs000000/bin
合計 0
lrwxrwxrwx 1 xs000000 members 15 12月 23 12:00 php -> /usr/bin/php7.4
その後、~/.bash_profile
を編集して、PATHの部分を変更す。作成した$HOME/bin
を既存の$PATH
の最初に追加する。
PATH=$HOME/bin:$PATH
これにより、システムは最初に$HOME/bin
を検索し、その後で既存の$PATH
を検索するため、$HOME/bin
が優先される。
最後に、この設定を有効にするためには以下のコマンドを実行する。
[ xs000000@sv00000 home]$ source ~/.bash_profile
結果:
バージョンが変更された。
[ xs000000@sv00000 home]$ php -v
PHP 7.4.33 (cli) (built: Aug 15 2023 10:32:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies