yum을 사용하여 CentOS에서 최신 PHP 버전으로 업그레이드하려면 어떻게합니까?


22

이에 대한 블로그 게시물을 찾았지만 부작용에 대한 설명이 부족합니다.

나는이 단계들에 대한 세부 사항을 실제로 사용할 수 있습니다.

  1. yum에 PHP 5.4를 제공하는 저장소를 추가하는 방법
  2. CentOS의 현재 PHP 버전을 완벽하게 대체 할 수 있습니까?
  3. PHP 5.4를 지원할 때 공식 저장소로 다시 전환하려면 어떻게해야합니까? (내 시스템의 현재 5.3.3)
  4. 현재 사용중인 PHP 모듈을 손상시킬 가능성이 있습니까?

노트

사람들은 최신 버전에서 동일한 방법으로 업그레이드했으며 문제의 특정 버전을 제거하는 것이 좋습니다. 최신 버전에서 실제로 문제가 발생하는 경우 버전을 고정하는 것이 좋지만 커뮤니티에서 제안한 최신 성공 버전을 메모로 유지하고 싶습니다.

다른 버전에서 성공적으로 업그레이드 한 경우 자유롭게 업데이트하십시오.

  • PHP 버전 : 5.4, 5.5, 5.6
  • CentOS 버전 : 5, 6

답변:


19

Fedora 17/16, CentOS / RHEL 6.3 / 5.8에 Apache / PHP 5.4.10 설치 의 지침을 약간 수정했습니다. 아마도 10 분이 걸렸습니다. 내 정확한 명령은 다음과 같습니다. 첫 번째 명령은 기사에 표시된 것과 달라야합니다. 에서 epel-release-6-7.noarch.rpm로 변경되었습니다 epel-release-6-8.noarch.rpm.

  1. yum에 PHP 5.4를 제공하는 저장소를 추가하는 방법은 무엇입니까?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. CentOS에서 현재 PHP 버전을 완벽하게 대체 할 수 있습니까? 나에게 다음 명령이 효과가 있었고 기존 PHP 웹 페이지 중 어느 것도 깨지지 않았습니다. 귀하의 마일리지가 다를 수 있습니다.

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. PHP5.4를 지원할 때 공식 리포지토리로 다시 전환하려면 어떻게해야합니까? CentOS 리포지토리에서 PHP를 제거하고 다시 설치하는 명령을 테스트하지는 않았지만 작동합니다.

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    
  4. 현재 사용중인 PHP 모듈을 손상시킬 가능성이 있습니까? 예. Zend 설치 프로그램을 사용하여 설치된 Zend와 함께 최신 버전의 CentOS (6.2?)를 사용하면 위의 업그레이드로 Zend가 중단되었습니다.

위의 모든 명령은로 실행되었습니다 root. 모범 사례는 권한이없는 사용자로 로그인하여을 사용하는 것 sudo입니다. (현재 스냅 샷이있는 개발 VM입니다 ...)

또한 Remi 저장소를 기본적으로 활성화하지 마십시오. 과거에는 저장소를 우선적으로 사용하더라도 영리하고 기본적으로 활성화했습니다.


3
레미로 인해 추악한 일이 종종 발생합니다. 최신 PHP에는 iuscommunity 리포지토리를 사용하는 것이 좋습니다. 또 다른 방법은 Zend 서버 저장소를 사용하는 것이지만 약간 오버 헤드 인 것 같습니다.
Kazimieras Aliulis

1
불행하게도 IUS 저장소는 호환되지 않는 패키지 및 파일 이름을 사용하여 종속성 지옥을 유발합니다. 나는 그것을 사용하는 것이 좋습니다.
Michael Hampton

매우 철저한 설명. Zend 엔진과 관련된 코드가 없으므로 제 경우에는 중요하지 않습니다.
Vicary

1
@MichaelHampton 내가 사용 yum --enablerepo=remi update하고 모든 관련 PHP 패키지를 관리하며 더 나은 솔루션처럼 보입니다. 모든 정보 덕분에 며칠 동안 서버가 문제없이 실행됩니다.
Vicary 2012 년

1
참고 : php아파치가 PHP 파일을 제공하지 않기 때문에 설치 목록 에 추가 하는 것을 잊어 버렸습니다. 따라서 아파치가 PHP 파일을 제공하지 않으므로 이것을 추가하는 것을 잊지 마십시오.
eric.itzhak

9

다른 Webtatic 답변보다 개선 :

1 . http://www.webtatic.com/packages/php54/ 의 안내서 사용 :

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

2. 먼저 기존의 설치된 패키지를 대체해야하는 것을 확인해야합니다. yum 쉘을 사용하여 php-common 제거와 하나의 트랜잭션에서 php54w-common 설치를 결합하여이를 수행 할 수 있습니다 (따라서 공유 종속성이 제거되지 않음)

yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

결과에 "y"라고 말하지 말고 "종속성 제거"에 언급 된 모든 패키지를 기록하십시오.

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

이 목록에 php * 이외의 다른 패키지가 있으면 Webtatic PHP 5.4로 완벽하게 전환 할 수 없지만 대안을 조사해야합니다. Webtatic은 모든 기본 PHP 패키지에 대한 대체 패키지를 보유하고 있으므로 (1의 링크 된 페이지에 나열된 패키지 참조) 특정 PHP 버전에 따라 패키지가 설치된 다른 타사 리포지토리를 사용하지 않는 한 문제가 없습니다. 설치되었습니다.

나머지 설치 (여전히 yum 셸에 있음)의 경우 이러한 패키지를 제거하고 php54w- * 대응 물을 설치하면됩니다.

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

그런 다음 목록에서 제거 및 설치하도록 설정 한 패키지 만 표시되고 설치를 전환하도록 확인할 수 있습니다. 현재 php가로드 된 상태에서 실행중인 모든 서비스 (예 : httpd 또는 php-fpm)를 다시 시작해야합니다.

이것이 '완벽한'이기 때문에 사용자가 웹 사이트에 액세스 할 수있는 동안 발생하는 모든 소프트웨어 변경은 결과를 완전히 이해해야합니다. 프로세스가 아직로드되지 않은 경우 제거 및 추가 된 공유 라이브러리는 공유 라이브러리가없는 동안 잠재적으로로드 될 수 있습니다. 오프라인과 같은 소프트웨어 업그레이드를 수행하는 것이 좋으며, 비 프로덕션 머신에서 먼저 테스트하여 프로세스가 예상대로 작동하는지 확인하는 것이 좋습니다.

삼 . 가상 CentOS 기본 php54 패키지 (CentOS 5는 php53 접두사 사용)로 전환하려면 위의 단계를 실행하여 php 제거를 php54w 제거로 바꾸고 php54w 설치를 php54 설치로 바꾸십시오.

yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

그러나 가상의 기본 php54로 전환하는 경우 일부 패키지에 대한 대안이 없을 것입니다 (예 : CentOS 5에는 php53-pecl-memcache 확장이 없었습니다) .Webtatic에는 CentOS 기반에서 사용할 수없는 패키지가 있습니다 (예 : php54w -pecl-zendopcache). 누락 된 경우 pecl을 사용하여 직접 설치하는 것 이외의 다른 옵션은 없습니다.

4. PHP 업그레이드시 버그가 발생할 수 있으며 웹 사이트를 다시 테스트해야합니다. 이것은 Webtatic에만 국한된 것이 아니라 새로운 기능으로 인해 새로운 버그가 발생한다는 일반적인 아이디어입니다.

허용되는 답변에있는 Remi의 저장소와 달리 Webtatic EL6 저장소는 CentOS 기본 저장소와 동일한 패키지 이름을 사용하지 않으므로 전환하지 않으려는 패키지의 설치 / 업그레이드를 무시하지 않으며 기본적으로 활성화되어 있습니다.

면책 조항 : 나는 Webtatic의 소유자 / 유지 자입니다


yum shell 방법은 의존성 관찰에 정말 좋습니다.
Vicary

@ 앤디, 자세한 작성 감사합니다. CentOS 6에서 PHP의 기본 cli (및 cli 만)를 5.4로 변경하려면 어떻게합니까?
Gaia

0

yum 설치에 대한 PHP 5.4.9를 찾을 수 있습니다.

http://www.webtatic.com/packages/php54/

"rpm -qa | grep php"를 사용하여 현재 모든 PHP 패키지를보고 "rpm -e"를 제거 할 수 있습니다. 현재 모듈을 모르지만 업그레이드 전에 테스트 할 가치가 있습니다.


당신은 다소 대답 1. 서버 유지 관리에 관해서는 단순히 설치하고 테스트를 실행하는 것이 아니라 실제로 아무것도하기 전에 더 많은 정보를 사용할 수 있습니다.
Vicary
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.