web-dev-qa-db-ja.com

Ubuntu 14.04でphp-cliバージョンを変更するにはどうすればよいですか?

Linuxを使用するのは初めてで、改ざん中にいくつかのphp設定を壊しました。

phpinfo();を含むphpスクリプトを実行すると、PHPバージョンは5.6として表示されますが、php -vを実行すると、バージョン7.0が返されます。

両方のバージョンを一致させたい。
コマンドラインPATHを修正してphp 5.6も使用するにはどうすればよいですか?

38
Alihan Koç
Sudo update-alternatives --set php /usr/bin/php5.6

参照してください: ソース

106
Sergey Repin

PHP 7.1から=> PHP 5.6

Sudo update-alternatives --set php /usr/bin/php5.6

PHP 5.6から=> PHP 7.1

Sudo update-alternatives --set php /usr/bin/php7.1

必要に応じてバージョンを変更できます。

これを確認できます tutorial

よろしく!!

25

この説明はUbuntu 16.04に基づいていますが、他のバージョンでも機能すると予想されます

ここでのほとんどの回答は、コマンドを使用してphp-versionを操作します

Sudo update-alternatives --set ...

このコマンドは非常に便利ですが、何をするのか正確には説明されていません。バックアップといくつかのオプションを含む説明があります。

情報を入手する

  • コマンドupdate-alternativesは、通常/etc/alternativesと定義されているUbuntuの代替方向にあるシンボリックリンクを表示または変更しますが、変更することもできます。
  • update-alternativesに関連するオプションの完全なリストはupdate-alternatives --helpコマンドで表示でき、より詳細な説明はman update-alternativesで表示できます。
  • コマンドupdate-alternativesは特別なフォルダー内の主要な変更シンボリックリンクであるため、そのフォルダーの内容は、phpで始まるすべての項目に続いて、一般的なコマンドでも表示できます。
 $ ls -al /etc/alternatives/php*  
lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2  
lrwxrwxrwx 1 root root 31 Jan 19 02:58 /etc/alternatives/php.1.gz -> /usr/share/man/man1/php7.2.1.gz  
lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2  
lrwxrwxrwx 1 root root 35 Jan 19 03:00 /etc/alternatives/php-cgi.1.gz -> /usr/share/man/man1/php-cgi7.2.1.gz 
lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
  • コマンドupdate-alternativesでアイテムを表示するには、次のコマンドを使用します。
$ update-alternatives --list php  
/usr/bin/php7.0  
/usr/bin/php7.2
  • 詳細を表示するには、これを実行できます。
$ update-alternatives --display php
php - auto mode
  link best version is /usr/bin/php7.2
  link currently points to /usr/bin/php7.2
  link php is /usr/bin/php
  slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php7.0 - priority 70
  slave php.1.gz: /usr/share/man/man1/php7.0.1.gz
/usr/bin/php7.2 - priority 72
  slave php.1.gz: /usr/share/man/man1/php7.2.1.gz

最後に、どのphpバージョンをリンクできるかを知りたいです。次のコマンドは、/usr/bin/で現在使用可能なphpバージョンのリストを表示します。

$ ls -al /usr/bin/php*
lrwxrwxrwx 1 root root      21 Jan  1 19:47 /usr/bin/php -> /etc/alternatives/php
-rwxr-xr-x 1 root root 4385840 Apr  5 18:13 /usr/bin/php7.0
-rwxr-xr-x 1 root root 4875488 Apr  5 18:10 /usr/bin/php7.2
lrwxrwxrwx 1 root root      25 Jan  1 19:47 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x 1 root root 4279672 Apr  5 18:13 /usr/bin/php-cgi7.0
-rwxr-xr-x 1 root root 4769272 Apr  5 18:10 /usr/bin/php-cgi7.2
-rwxr-xr-x 1 root root     663 Feb 29  2016 /usr/bin/phpunit

情報をバックアップする

  • これらのシンボリックリンクの情報バックアップを作成するには、リストをファイルに保存し、次のコマンドでデスクトップに保存します(ファイル名alternatives-php.txtを必要に応じて調整します):
$ echo "command: update-alternatives --list php" > ~/Desktop/alternatives-php.txt
$ update-alternatives --display php >> ~/Desktop/alternatives-php.txt 
$ echo "command: update-alternatives --display php" >> ~/Desktop/alternatives-php.txt
$ update-alternatives --display php >> ~/Desktop/alternatives-php.txt  

必要に応じて、上記のようにコマンドlsの結果を追加できます。

$ echo "command: ls -al /etc/alternatives/php*" >> ~/Desktop/alternatives-php.txt
$ ls -al /etc/alternatives/php* >> ~/Desktop/alternatives-php.txt

...および利用可能なPHPバージョン:

$ echo "command: ls -al /usr/bin/php*" >> ~/Desktop/alternatives-php.txt
$ ls -al /usr/bin/php* >> ~/Desktop/alternatives-php.txt

コマンドラインのPHPバージョンを変更する

  • 最初にman- documentsをフィルタリングすると、/etc/alternatives/php*/のリストには3行が含まれます。
 $ ls -al /etc/alternatives/php*  
lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2  
lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2  
lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
  • 一方で、システム全体に一貫したリンクがあれば便利かもしれませんが、いくつかのphpバージョンがシステムに既に存在するという事実は、cliwebcgiは異なる構成にすることができます。
    どのシンボリックリンクを変更する必要がありますか?
    PHP for webは通常、/etc/alternativesのシンボリックリンクの使用によって構成されず、cli(commandline)は通常cgi-versionまたはcgi-configurationを使用しません。したがって、phpのシンボリックリンクのみを変更するとコマンドラインで機能し、php-cgiphp-cgi-binの変更はおそらく必要ないと想定できます。通常、最新バージョンはデフォルトでリンクされているため、以下のコマンドは/usr/bin/のリストから取得した古いバージョンを使用しています。
$ Sudo update-alternatives --set php /usr/bin/php7.0
update-alternatives: using /usr/bin/php7.0 to provide /usr/bin/php (php) in manual mode

コントロール

変更の確認:

$: php -v
PHP 7.0.29-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Apr  5 2018 08:34:50) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.29-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies

変更は受け入れられ、現在使用されているバージョンは古いバージョンです。

  • 次に、manページが書かれているバージョンを確認します。
$: man php
... [SCROLL DOWN]
VERSION INFORMATION
   This manpage describes php, version 7.0.29-1+ubuntu16.04.1+deb.sury.org+1.
COPYRIGHT
...

つまり、PHPバージョンはマンページと整合性があり、コマンドman phpは現在のphpバージョンの正しい説明を返し、マンページに関する手動調整は不要です

19
David

よりインタラクティブな方法は次のとおりです。

update-alternatives --config php

利用可能なすべてのバージョンのリストが表示され、そのうちの1つを選択します

9
Dmitry

端末のコマンドラインで正しいphpバージョンへのパスを設定してみてください:

set PATH="/usr/bin/php5.6/bin:$PATH"

PHP 5.6への独自のパスに一致するようにパスを変更します(つまり、最初にインストールされた場合は、「/ usr/bin/php」のようなものになります)。

最後の「$ PATH」は現在のパス値を追加するので、使用することを忘れないでください。

0
DocWeird