Como atualizo para a versão mais recente do PHP no CentOS com yum?

22

Eu encontrei alguns posts sobre isso, mas é bastante falta de descrições sobre possíveis efeitos colaterais.

Eu realmente poderia usar alguns detalhes sobre essas etapas:

  1. Como adicionar um repositório que forneça o PHP 5.4 no yum
  2. Isso pode substituir perfeitamente a versão atual do PHP no CentOS?
  3. Como posso voltar ao repositório oficial quando ele suporta o PHP 5.4? (5.3.3 atual no meu sistema)
  4. Existe algum potencial para quebrar os módulos PHP que estou usando atualmente?

Nota

As pessoas fizeram upgrade com sucesso com o mesmo método nas versões mais recentes e sugerem a remoção de versões específicas na pergunta. Embora seja bom definir as versões caso as versões mais recentes realmente quebrem algo, eu gostaria de manter a última versão de sucesso sugerida pela comunidade como uma nota.

Sinta-se livre para atualizar isso se você tiver atualizado com sucesso em outras versões.

  • Versões do PHP: 5.4, 5.5, 5.6
  • Versão do CentOS: 5, 6
Vicary
fonte

Respostas:

19

Eu segui as instruções do Install Apache / PHP 5.4.10 no Fedora 17/16, CentOS / RHEL 6.3 / 5.8 com uma pequena modificação. Demorou talvez 10 minutos. Meus comandos exatos são mostrados abaixo. Observe que o primeiro comando teve que ser alterado em relação ao mostrado no artigo. A mudança foi de epel-release-6-7.noarch.rpmpara epel-release-6-8.noarch.rpm.

  1. Como adicionar um repositório que forneça o PHP 5.4 no yum?

    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. Isso pode substituir perfeitamente a versão atual do PHP no CentOS? Para mim, os seguintes comandos funcionaram e nenhuma das minhas páginas da web PHP existentes quebrou. Sua milhagem pode variar.

    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. Como posso voltar ao repositório oficial quando ele suporta PHP5.4? Não testei os comandos para remover e reinstalar o PHP dos repositórios do CentOS, mas eles devem funcionar.

    # 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. Existe algum potencial para quebrar os módulos PHP que eu [sic] estou usando atualmente? Sim. Usando uma versão recente do CentOS (6.2?) Com o Zend instalado usando o instalador do Zend, a atualização acima quebrou o Zend.

Todos os comandos acima foram executados como root. A melhor prática é fazer login como usuário não privilegiado e usá-lo sudo. (Esta é uma VM de desenvolvimento com um instantâneo atual ...)

Além disso, NÃO ative o repositório Remi por padrão - no passado, fiquei inteligente e o ativei por padrão e as coisas quebraram, mesmo com a prioridade do repositório.

Jeff Benshetler
fonte
3
As coisas geralmente ficam feias com remi. Eu prefiro usar o repositório iuscommunity para php atualizado. Outra maneira é usar o repositório do servidor Zend, mas parece um pouco sobrecarregado para mim.
Kazimieras Aliulis
1
@KazimierasAliulis Infelizmente, o repositório IUS induz a dependência de inferno usando nomes de pacotes e arquivos incompatíveis. Não recomendo usá-lo.
Michael Hampton
Descrição muito completa. Como não tenho código relacionado ao mecanismo Zend, isso não deve importar no meu caso, certo?
Vicary
1
@ MichaelHampton eu uso yum --enablerepo=remi updatee ele cuida de todos os pacotes php relacionados, parece uma solução melhor. O servidor funciona sem problemas há alguns dias, obrigado por todas as informações.
Vicary
1
Nota: o cara esqueceu de acrescentar phpà lista de instalar, o que me causou um monte de problemas como apache não servce arquivos PHP, por isso não se esqueça de adicionar este ao usar
eric.itzhak
9

Uma melhoria em relação à outra resposta Webtatic:

1 Usando o guia em http://www.webtatic.com/packages/php54/ :

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

2) Você precisa primeiro ver o que os pacotes instalados existentes precisam substituir, você pode fazer isso usando o yum shell para combinar a remoção do php-common e a instalação do php54w-common em uma transação (para que as dependências compartilhadas não sejam removidas)

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

Não diga "y" aos resultados, mas tome nota de todos os pacotes mencionados em "Removendo para Dependências", por exemplo

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

Se houver outros pacotes além do php * nesta lista, você não poderá alternar perfeitamente para o Webtatic PHP 5.4, mas terá que investigar alternativas. O Webtatic possui pacotes de substituição para todos os pacotes php base (consulte os pacotes listados na página vinculada ao 1. para confirmação); portanto, não deve haver problemas, a menos que você use outros repositórios de terceiros com pacotes instalados, dependendo da versão php específica instalado.

No restante da instalação (ainda no yum shell), você apenas remove esses pacotes e instala os correspondentes 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

Você deve ver apenas os pacotes que você definiu para serem removidos e instalados na lista e pode confirmar a alternância da instalação. Quaisquer serviços atualmente em execução com o php carregado precisarão ser reiniciados, por exemplo, httpd ou php-fpm.

Como isso é "contínuo", qualquer alteração de software que ocorra enquanto os usuários podem acessar o site deve ter as consequências totalmente compreendidas. As bibliotecas compartilhadas que estão sendo removidas e adicionadas quando um processo ainda não foi carregado podem ser carregadas enquanto a biblioteca compartilhada não está lá. É melhor fazer atualizações de software como essa offline e, de preferência, testar em uma máquina que não seja de produção primeiro para verificar se o processo funciona conforme o esperado.

3) Para mudar para um hipotético pacote php54 base do CentOS (o CentOS 5 usou o prefixo php53), basta executar as etapas acima, substituindo a remoção php pela remoção php54w e a instalação php54w pela instalação php54, por exemplo

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

Entretanto, quanto à mudança para a base hipotética php54, provavelmente não haverá alternativas para alguns pacotes (por exemplo, não havia extensão php53-pecl-memcache no CentOS 5) e o Webtatic possui pacotes que não estão disponíveis no CentOS base (por exemplo, php54w -pecl-zendopcache). Se eles estiverem ausentes, normalmente você não tem outra opção senão usar o pecl diretamente para instalá-los.

4) Qualquer atualização do PHP pode apresentar bugs, e os sites devem ser testados novamente. Isso não é específico para o Webtatic, mas a idéia geral de que novos recursos introduzem novos bugs.

Diferentemente do repositório Remi na resposta aceita, o repositório Webtatic EL6 nunca usa os mesmos nomes de pacotes que os repositórios base do CentOS, portanto, não substitui a instalação / atualização de pacotes para os quais você não pretende mudar e, como tal, é ativado por padrão.

Disclaimer: Eu sou o proprietário / mantenedor do Webtatic

Andy
fonte
O método yum shell é realmente bom para observação de dependência, obrigado.
Vicary
@ Andy, ótimo detalhado escrever, obrigado. Como altero o CLI padrão (e somente o CLI) do PHP para 5.4 no CentOS 6?
Gaia
0

você pode encontrar o php 5.4.9 aqui para a instalação do yum:

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

você pode fazer um "rpm -qa | grep php" para ver todos os seus pacotes php atuais e um "rpm -e" para remover. Eu não conheço seus módulos atuais, mas vale a pena testar antes da atualização.

TheDayIsDone
fonte
Você meio que respondeu 1. Quando se trata de manutenção do servidor, não é simplesmente instalá-lo e executar testes, eu poderia realmente usar mais informações antes de fazer qualquer coisa.
Vicary