0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【LINUX】サーバーでPHPバージョンを変える

Posted at

問題
composerでphpoffice/phpspreadsheetをインストールしたいが、PHPバージョンが低すぎてインストールできない。
XサーバーのUI画面で変えられるPHPバージョンはWEBで動作するPHPバージョンであり、CLIのPHPバージョンは変えられない。

title.text
[ 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で変えようとしたが、失敗した。バージョンはそのままだった。

title.text
[ 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に作成する。

title.text
[ xs000000@sv00000 ~]$ mkdir $HOME/bin
title.text
[ 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の最初に追加する。

title.text
PATH=$HOME/bin:$PATH

これにより、システムは最初に$HOME/binを検索し、その後で既存の$PATHを検索するため、$HOME/binが優先される。

最後に、この設定を有効にするためには以下のコマンドを実行する。

title.text
[ xs000000@sv00000 home]$ source ~/.bash_profile

結果
バージョンが変更された。

title.text
[ 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
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?