phpinfo ()와 php -v는 다른 버전의 PHP를 보여줍니다


20

php사용 중인 버전 을 알고 싶었 으므로 표준 스크립트를 작성했습니다.

phpinfo();

어느 것이 나에게

PHP version 5.6.10

올바른 PHP 버전은 내 응용 프로그램에 필요한. 터미널에서 시도했을 때 :

php -i

또는

php -v

그것은 나를 보여줍니다 :

PHP version 5.3.2

나는 필요하지 않습니다. 그런 다음 시도했습니다.

which php

그것은 나를 보여줍니다 :

/usr/bin/php

이제 어떤 버전의 PHP를 사용하고 있는지 혼란 스럽습니다. 파일은 호스팅 웹 사이트에 업로드하고 내가 좋아하는 설정 파일을 변경 할 수 없습니다 httpd.conf또는 php.ini.

답변:


22

더 짧은 대답.

당황하지 마십시오! 아파치 서버가 어떤 PHP 버전을 사용하고 있는지에 대해 걱정한다면, phpinfo()항상 출력에 주의를 기울여야합니다. Apache PHP 모듈과 PHP 명령 행 바이너리는 서로 간섭하지 않는 두 가지입니다.

실제로 Apache를 올바르게로드하도록 조정하는 한 Apache에서 작업하려는 다양한 PHP 버전을 컴파일하고로드 할 수 있습니다. PHP 페이지를 파싱하는 Apache의 경우 PHP 명령 행 인터페이스가 작동하지 않습니다.

PHP의 커맨드 라인 버전은 단순히 커맨드 라인 특정 작업을 위해 존재하며 Apache 용 PHP 모듈은 절대 만지거나 사용하거나 필요로하지 않습니다.

더 긴 대답.

당신은 이것을 말합니다 :

php사용 중인 버전 을 알고 싶었 으므로 표준 스크립트를 작성했습니다.

phpinfo();

내 응용 프로그램에 필요한 PHP 버전 5.6.10- 올바른 PHP 버전을 제공합니다. 터미널에서 시도했을 때 :

php -i or php -v   

필자가 필요로하지 않는 PHP 버전 5.3.2를 보여줍니다.

명령 행에서 사용 가능한 PHP 버전은 모듈로로드 된 PHP 버전과 100 % 관련이 없습니다. 이것들은 완전히 별개의 것입니다.

따라서 웹 응용 프로그램이 사용하는 PHP 버전이 걱정된다면 phpinfo()버전 5.6.10이 표시되고 100 % 괜찮습니다.

PHP의 커맨드 라인 버전은 완전히 별개의 시스템 아이템입니다. 따라서 중요한 것은의 출력입니다 phpinfo().

어떤 이유로 Apache와 함께 다른 버전의 PHP를 사용하려면 컴파일 된 Apache PHP 모듈을 어딘가에 설치하고 시스템의 Apache 구성에서이 줄을 추가 또는 조정하기 만하면됩니다.

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

그리고 libphp5.so아파치가 PHP를 파싱하는 데 사용 하는 경로를 조정 한 다음 아파치를 다시 시작하면 비즈니스가 시작됩니다.

예를 들어, 어느 시점에서 PHP 5.3.5를 실행하는 Ubuntu 12.04 시스템에서 사용하기 위해 소스에서 PHP 버전 5.1.6을 컴파일해야했습니다 (GD 라이브러리 지원). 서버의 PHP 모듈 로딩 파일에서 :

/etc/apache2/mods-available/php5.load

나는 이런 줄을 가지고 있었다 :

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

한 줄은 어떻게 주석 처리되고 libphp535.so다른 한 줄 libphp516-gd.so은 주석 해제됩니까? 내가 한 것은 기본 PHP 5.3.5 libphp5.soApache 모듈 libphp535.so의 이름을 버전 번호로 바꾸어 참조 할 수 있도록 한 다음 PHP 5.1.6 (GD 라이브러리 지원) 모듈의 이름을 지정 libphp516-gd.so했기 때문에 뿐만 아니라. 이 방법으로 시스템에서 나에게 두 가지를 모두 사용할 수 있습니다.

그리고 내가 처음에 말했듯이, 명령 행에 사용 된 PHP 버전은 Apache PHP 모듈과 전혀 관련이 없습니다. 따라서 시스템에 여러 가지 버전의 Apache PHP 모듈을 배치 할 수 있습니다. 설정을 조정하고 Apache를 다시 시작하기 만하면 Apache에서 지정한 PHP 버전을 사용할 수 있습니다.


26

Apache를 사용하여 Ubuntu 14.04에서 PHP5에서 PHP7로 업그레이드하는 동안이 문제가 발생하면 다음과 같은 도움이 됩니다 (신용 정보는 여기로 이동 ).

Apache에서 PHP5 모듈을 비활성화합니다 :

sudo a2dismod php5

이제 PHP7을 활성화하십시오 :

sudo a2enmod php7.1

변경 사항을 반영하려면 Apache를 다시 시작해야합니다.

sudo systemctl restart apache2

php.ini가 다르면 프로젝트가 중단 될 수 있습니다
KawaiKx

또한 새 버전의 PHP 라이브러리가 설치되어 있는지 확인하십시오. 즉 gd, mcrypt, xml 등을 의미합니다.
korwalskiy

2

웹 서버에서 PHP 코드를 실행하려는 경우 사용중인 버전은 phpinfo()= 5.6.10 입니다.

서버에는 분명히 여러 버전의 PHP가 설치되어 php있으며 명령 줄에서 로그인하여 실행 하면 / usr / bin / php에 설치된 이전 버전이 나타납니다.

서버는 여러 버전의 PHP를 가질 수 있으며 귀하의 것으로 보입니다.

웹 서버와 동일한 PHP를 수동으로 실행해야하는 경우 다른 버전을 찾아야합니다. 다음 명령을 실행하십시오.

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

그중 하나가 웹 서버와 동일한 버전의 PHP를 공개 할 수 있으며, 어느 것이 PHP인지 알아낼 때 기본값 대신 해당 PHP를 사용할 수 있습니다.


0

2 센트를 더할 수 있다면 ...

Nextcloud 버전을 업그레이드하고있었습니다. 업그레이드 절차를 실행할 때 아파치 사용자로 "sudo php"를 실행해야하지만, 아파치 사용자가 기본적으로 실행하는 php CLI 버전이 너무 오래 되었기 때문에 실행을 거부했습니다. 그러나 phpinfo (); 내 서버에 설치된 최신 PHP 버전이 표시되었습니다.

나는 그것 때문에 실현 /home/apache/.bashrc 파일의 PATH 변수가 내 서버에 설치 한 PHP의 첫 번째 버전으로 설정 하고, (나는 항상 / 컴파일 Github에서에 소스 PHP를 설치 다시 업데이트되지 않았다 )

해결책:

웹 서버에서 PHP를 업데이트하고 Apache 사용자로 sudo 할 때 사용 된 CLI PHP 버전이 최신인지 확인하려면 다음과 같이이 사용자의 .bashrc 파일에서 변경해야합니다.

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH


-1

이 문제를 해결하는 단계 우선 어떤 PHP 버전이 당신을 보여줍니다.

php -v

이제 PHP 경로가 필요합니다. 모르는 경우 PHP 경로에 대한 호스팅 지원에 문의 할 수 있습니다. 내 경우에는

/opt/php71/bin/php

이제 터미널에서이 명령을 실행할 차례입니다.

alias php='/opt/php71/bin/php'

이것은 PHP 버전을 PHP 7.1로 변경합니다. 7.2로 변경하려면 시도해보십시오

alias php='/opt/php72/bin/php'

끝났습니다. 로 확인

php -v

-3

php 최신 버전의 환경 변수 경로를 만듭니다. 서버와 cli PHP는 동일합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.