개발 꿀팁/PHP

centos에서 php5.3에서 php5.6으로 업그레이드

Jammie 2022. 7. 1. 14:49
반응형

Talk is cheap, show me the code.

기존 php5.3 보기 및 삭제
기존 php 버전 보기:

php -V

설치된 php의 패키지 보기:

yum list installed | grep php

설치된 php의 패키지 보기:

php-common.x86_64 0:5.3.3-38.el6   
php-gd.x86_64 0:5.3.3-38.el6        
php-ldap.x86_64 0:5.3.3-38.el6          
php-mysql.x86_64 0:5.3.3-38.el6    
php-odbc.x86_64 0:5.3.3-38.el6      
php-pdo.x86_64 0:5.3.3-38.el6           
php-pear.noarch 1:1.9.4-4.el6      
php-pecl-apc.x86_64 0:3.1.9-2.el6   
php-pecl-memcache.x86_64 0:3.0.5-4.el6  
php-pgsql.x86_64 0:5.3.3-38.el6    
php-soap.x86_64 0:5.3.3-38.el6      
php-xml.x86_64 0:5.3.3-38.el6           
php-xmlrpc.x86_64 0:5.3.3-38.el6

모두 5.3.3-38.el6 버전이다.

기존 5.3의 가방을 삭제하지 않으면 php5를 설치합니다..6 가방은 충돌하는 오류를 보고합니다.

5.3의 패키지 삭제:

yum remove php.cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mysql.x86_64 php-odbc.x86_64 php-pdo.x86_64 php-pear.noarch php-pecl-apc.x86_64 php-pecl-memcache.x86_64 php-pgsql.x86_64 php-soap.x86_64 php-xml.x86_64 php-xmlrpc.x86_64

삭제 후 삭제 완료 여부를 확인하실 수 있습니다

yum list installed | grep php

결과는 헛수고가 되어야 한다.

php5.6 설치핸드백
센토스 때문에 6.* 기존 rpm에서5.6 패키지의 리소스가 포함되어 있지 않으므로 php를 가져오는 설치 소스를 먼저 설치해야 합니다.

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

그런 다음 5.6 관련 팩을 설치합니다.

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-odbc.x86_64 php56w-xml.x86_64 php56w-xmlrpc.x86_64 php56w-soap.x86_64

그런 다음 5.6 관련 팩을 설치합니다

centos 6.* 기존 rpm에는 5.6 패킷의 리소스가 포함되어 있지 않기 때문에 php를 가져오는 설치 소스를 먼저 설치해야 합니다

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

그런 다음 5.6 관련 팩을 설치합니다

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-odbc.x86_64 php56w-xml.x86_64 php56w-xmlrpc.x86_64 php56w-soap.x86_64

모두 설치 완료 후 확인하시기 바랍니다

yum list installed | grep php

결과는 다음과 같다.

php56w.x86_64            5.6.27-1.w6    @webtatic                               
php56w-cli.x86_64        5.6.27-1.w6    @webtatic                               
php56w-common.x86_64     5.6.27-1.w6    @webtatic                               
php56w-gd.x86_64         5.6.27-1.w6    @webtatic                               
php56w-ldap.x86_64       5.6.27-1.w6    @webtatic                               
php56w-mbstring.x86_64   5.6.27-1.w6    @webtatic                               
php56w-mysql.x86_64      5.6.27-1.w6    @webtatic                               
php56w-odbc.x86_64       5.6.27-1.w6    @webtatic                               
php56w-pdo.x86_64        5.6.27-1.w6    @webtatic                               
php56w-soap.x86_64       5.6.27-1.w6    @webtatic                               
php56w-xml.x86_64        5.6.27-1.w6    @webtatic                               
php56w-xmlrpc.x86_64     5.6.27-1.w6    @webtatic

php-fpm 재시작:

/usr/local/php/sbin/php-fpm restart

그런 다음 다음을 수행합니다

php -v

5.6이 표시되어야 한다.

업그레이드가 완료되었습니다.

그러나 한 가지 의문점이 있다.

서버에서 직접 ph 실행p-v 버전은5.6. 하지만 ngi에서는nx서버는 다음과 같이 info.php를 쓴다.

<?php
    phpinfo();
?>

다음 브라우저에서: http://ip:port/info.php, 이전 버전 5.3으로 표시됩니다. 이 문제는 아직 해결되지 않았습니다.

위의 질문에 대한 추적은 다음과 같다.

위에서는 php가 설치된 의존성 패킷을 삭제했지만, 오래된 php 버전 자체는 삭제하지 않았다. 즉, centos에 php가 두 가지 버전이 존재하여 php를 업그레이드한다.패킷 손실 후 php-v만 실행그러나 시스템 접근 경로는 기본적으로 5.6 버전의 패킷에 접근하지만, 다른 애플리케이션(예: nginx)을 통해 접근한 것은 이전 버전 5.2의 php이다.

검사 과정은 다음과 같습니다.
php-v: 5.6 실행

시스템의 모든 버전의 php 보기:

find / -name php

다음 두 가지 명령을 표시합니다

/usr/local/php/bin/php
/etc/bin/php

따로따로 집행하다/usr/local/php/bin/php-v 와/etc/bin/php-v하나는 5.2버전, 하나는 5.6버전, 그래서 위의 php-v는 5.6버전, phpinfo는 5.2버전의 직접적인 원인이 된다.

근본 원인:nginx를 통해 php 요청에 액세스하고, nginx는 127.0.0.1:9000으로 전송하며, 9000 포트를 수신한 php-fpm은 해당 php 인터프리터에 요청을 전달하여 처리한다. 즉, 어떤 버전의 php를 사용할지는 php-fpm이 결정되며, php-fpm은 php의 하나의 패치일 뿐이며, php를 컴파일하여 설치할 때 configure에 매개 변수 -enable-fpm을 추가하여 php-fpm을 설치한다.

php5.6 재설치 방법은 리눅스 설치 nginx와 mysql, php.md을 참조한다.

또한, 시스템에서 채택하고 있는 현재의 php.ini 프로파일을 찾으려면 다음과 같은 방법으로 찾을 수 있습니다.

find / -name php.ini

이렇게 하면 여러 개의 php.ini 경로가 나타날 수 있습니다. 다음 명령을 실행하면 현재 시스템에서 사용 중인 php.ini 프로필을 가져올 수 있습니다

php -i | grep php.ini
반응형