web-dev-qa-db-ja.com

PHPのバージョン番号のみを取得する方法は?

CentOSにインストールされているPHPのバージョンのみを取得したい。

php -vの出力

PHP 7.1.16 (cli) (built: Mar 28 2018 13:19:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

私はこれを試しました:

php -v | grep PHP | awk '{print $2}'

しかし、私が得た出力は:

7.1.16
(c)

7.1.16のみを入手するにはどうすればよいですか?

16
The One

私のシステムでは:

$> php -v | grep ^PHP | cut -d' ' -f2
7.0.32-0ubuntu0.16.04.1

grep PHPが一致する場合every PHP発生する文字列。

^PHPは、「行の先頭にある文字列 'PHP'のみに一致する」を意味します。

明らかに、これはphp -vの出力フォーマットがバージョン/ビルド間で一貫している場合に機能します。

参考までに、出力全体は次のとおりです。

PHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.32-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
13
Mr Shunz

パッケージマネージャー(RPMやyumなど)経由でphpをインストールした場合は、そこからバージョンを照会できます。

rpm -q --queryformat="%{VERSION}" php

または、phpに バージョンを直接伝える を要求することもできます。

php -r 'echo phpversion();'
21
Jeff Schaller

さまざまな方法がありますが、私はルックビハインドを使用するのが好きです。

php -v | grep -Po '(?<=^PHP )[^ ]+'

または

php -v | grep -Po '(?<=PHP )([0-9.]+)'
6
Ravexina

awkから始めたので、ここにawkソリューションがあります。

$ php -v | awk '/^PHP/{print $2}'
7.2.10
5
terdon
php -v | awk NR==1'{print $2}'

または

php -v | awk '{print $2; exit}'
2
user88036
php -v | grep ^PHP | awk '{print $1, $2}'

出力はPHP 7.1.7になります

Ubuntu 18.04LTSでテスト済み

0
Sanjay

パイプ処理されている単一の関数だけで実行する場合は、次のようにsedを使用してみます。

php -v | sed -e '/^PHP/!d' -e 's/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\).*$/\1/'

最初にPHPで始まらない行を削除し、次にx.y.zの形式の最初のシーケンスであると想定して、その行からバージョンをクリップします。

または、元のスクリプトにより近いものが必要な場合は、単に^をgrepパターンの前に置いて、PHPで始まる行のみを探します。

php -v | grep ^PHP | awk '{print $2}'
0

これはよりクリーンでエレガントなソリューションだと思います(Windowsでも機能するはずです)。

php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION.'.'.PHP_RELEASE_VERSION;"

出力は7.2.24のようになります。

0
Max_Payne