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
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 함수 취약성 요약 (0) | 2022.07.01 |
---|---|
php 배열 개체 간 변환 (0) | 2022.07.01 |
PHP 설치Xdebug (0) | 2022.07.01 |
PHP는 과학적 카운트 포맷을 숫자 문자열로 변환하고, PHP는 필드 varchar 타입으로 비교 정렬합니다 (0) | 2022.07.01 |
PHP 8대 디자인 패턴 (0) | 2022.06.30 |