Como faço para atualizar para a versão mais recente do PHP no CentOS com o yum?

22

Encontrei algumas postagens sobre isso, mas a falta de descrições sobre possíveis efeitos colaterais.

Eu poderia realmente 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 a versão atual do PHP no CentOS?
  3. Como posso voltar ao repositório oficial quando ele suporta o PHP 5.4? (atual 5.3.3 no meu sistema)
  4. Haverá algum potencial para quebrar os módulos PHP que estou usando atualmente?

Nota

As pessoas foram atualizadas com o mesmo método em versões mais recentes e sugerem a remoção de versões específicas da pergunta. Embora seja bom definir versões no caso de versões mais novas realmente quebrarem alguma coisa, eu gostaria de manter a última versão bem-sucedida sugerida pela comunidade como uma nota.

Sinta-se à vontade para atualizá-lo, caso tenha feito upgrade com sucesso em outras versões.

  • Versões do PHP: 5.4, 5.5, 5.6
  • Versão do CentOS: 5, 6
por Vicary 11.12.2012 / 09:45

3 respostas

19

Eu segui as instruções de Instale o Apache / PHP 5.4.10 no Fedora 17/16, CentOS / RHEL 6.3 / 5.8 com uma pequena modificação. Demorou talvez 10min. Meus comandos exatos são mostrados abaixo. Observe que o primeiro comando teve que ser alterado do que é mostrado no artigo. A mudança foi de epel-release-6-7.noarch.rpm para 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. Isto pode perfeitamente substituir a versão atual do PHP no CentOS? Para mim, os seguintes comandos funcionaram e nenhuma das minhas páginas web existentes do PHP quebraram. 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? Eu não testei os comandos para remover e reinstalar o PHP dos repositórios do CentOS, mas estes 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. Haverá algum potencial para quebrar os módulos do PHP que eu estou atualmente usando? 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 é efetuar login como usuário não privilegiado e usar sudo . (Esta é uma VM de desenvolvimento com um instantâneo atual ...)

Além disso, NÃO habilite o repositório Remi por padrão - no passado eu fui esperto e o habilitei por padrão e coisas quebraram, mesmo com prioridade de repositório.

    
por 28.12.2012 / 13:22
9

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

1. Usando o guia no link :

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 shell yum 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 "Remover 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 * nessa lista, você não poderá alternar facilmente para o Webtatic PHP 5.4, mas terá que investigar alternativas. O Webtatic tem pacotes de substituição para todos os pacotes php básicos (veja os pacotes listados na página linkados em 1. para confirmação), portanto não deve haver problemas, a menos que você use outros repositórios de terceiros que tenham pacotes instalados dependendo da versão específica do php instalado.

Para o resto da instalação (ainda no shell do yum), basta remover esses pacotes e instalar seus equivalentes 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 então ver apenas os pacotes que você definiu para serem removidos e instalados na lista, e você pode confirmar a instalação para alternar. Quaisquer serviços atualmente em execução com o php carregado precisarão ser reiniciados, por exemplo, httpd ou php-fpm.

Quanto a isso ser 'contínuo', qualquer alteração de software que ocorra enquanto os usuários puderem 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 as carregou podem ser carregadas enquanto a biblioteca compartilhada não estiver lá. É melhor fazer atualizações de software como esta off-line e, de preferência, testar em uma máquina que não seja de produção primeiro para verificar se o processo funciona como esperado.

3. Para mudar para um hipotético pacote php54 com base no CentOS (o prefixo php53 do CentOS 5 usava), você apenas executava as etapas acima substituindo a remoção do php pela remoção do php54w e a instalação do php54w com a instalação do 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
No entanto, quanto à mudança para a base hipotética php54, provavelmente não haverá alternativas para alguns pacotes (por exemplo, não havia nenhuma extensão php53-pecl-memcache no CentOS 5) e o Webtatic tem pacotes que não estão disponíveis na base do CentOS (por exemplo, php54w-pecl-zendopcache). Se eles estão faltando, então você geralmente não tem outra opção além de usar o pecl diretamente para instalá-los.

4. Qualquer atualização do PHP pode apresentar erros e os sites devem ser retestados. Isso não é específico para Webtatic, mas a ideia geral é que novos recursos introduzam novos bugs.

Diferentemente do repositório de 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 substituirá a instalação / atualização de pacotes para os quais você não pretende mudar e, como tal, é habilitado por padrão.

Isenção de responsabilidade: Sou o proprietário / mantenedor da Webtatic

    
por 19.05.2013 / 20:51
0

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

link

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 sei seus módulos atuais, mas vale a pena testar antes da atualização.

    
por 16.12.2012 / 09:32