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을 어떻게 구할 수 있나요?
답변1
연장하다제프 샬러의 답변, 파이프를 완전히 건너뛰고 내부 상수 표현만 필요합니다.
$ php -r 'echo PHP_VERSION;'
7.1.15
이 패턴을 확장하여 더 많거나 적은 정보를 얻을 수 있습니다.
$ php -r 'echo PHP_MAJOR_VERSION;'
7
보다PHP 사전 정의 상수 목록모두 가능합니다.
주요 이점: 에 의존하지 않습니다 php -v
. 파이프라인 솔루션과 거의 동일한 성능을 발휘하므로 더 안정적인 옵션인 것 같습니다.
당신의 목표가 있다면시험버전의 경우 이 패턴을 사용할 수도 있습니다. 예를 들어, 0
이 코드는 PHP >= 7이면 종료되고, 1
그렇지 않으면 다음과 같습니다.
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
참고로 다양한 테스트 사례의 타이밍은 가장 빠른 것부터 정렬됩니다.
$ time for (( i=0; i<1000; i++ )); do php -v | awk '/^PHP [0-9]/ { print $2; }' >/dev/null; done
real 0m13.368s
user 0m8.064s
sys 0m4.036s
$ time for (( i=0; i<1000; i++ )); do php -r 'echo PHP_VERSION;' >/dev/null; done
real 0m13.624s
user 0m8.408s
sys 0m3.836s
$ time for (( i=0; i<1000; i++ )); do php -v | head -1 | cut -f2 -d' ' >/dev/null; done
real 0m13.942s
user 0m8.180s
sys 0m4.160s
답변2
패키지 관리자(예: RPM 또는 yum)를 통해 PHP를 설치한 경우 거기에서 버전을 쿼리할 수 있습니다.
rpm -q --queryformat="%{VERSION}" php
또는 PHP에 물어볼 수도 있습니다.버전을 직접 알려주세요.:
php -r 'echo phpversion();'
답변3
내 시스템에서:
$> php -v | grep ^PHP | cut -d' ' -f2
7.0.32-0ubuntu0.16.04.1
grep PHP
일치 로모든발생한 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
답변4
이것을 사용하기 시작했기 때문에 해결책 awk
은 다음과 같습니다 awk
.
$ php -v | awk '/^PHP/{print $2}'
7.2.10