Come faccio ad aggiornare all'ultima versione di PHP in CentOS con yum?


22

Ho trovato alcuni post sul blog su questo, ma è piuttosto la mancanza di descrizioni sui possibili effetti collaterali.

Potrei davvero usare alcuni dettagli su questi passaggi:

  1. Come aggiungere un repository che fornisce PHP 5.4 in yum
  2. Questo può sostituire senza problemi l'attuale versione di PHP in CentOS?
  3. Come posso tornare al repository ufficiale quando supporta PHP 5.4? (attuale 5.3.3 nel mio sistema)
  4. Ci sarà il potenziale per rompere i moduli PHP che sto attualmente usando?

Nota

Le persone hanno eseguito correttamente l'upgrade con lo stesso metodo nelle versioni più recenti e suggeriscono di rimuovere versioni specifiche nella domanda. Sebbene sia utile individuare le versioni nel caso in cui le versioni più recenti interrompano effettivamente qualcosa, mi piacerebbe tenere l'ultima versione di successo suggerita dalla community come nota.

Sentiti libero di aggiornare questo se hai aggiornato con successo su altre versioni.

  • Versioni PHP: 5.4, 5.5, 5.6
  • Versione CentOS: 5, 6

Risposte:


19

Ho seguito le istruzioni da Installa Apache / PHP 5.4.10 su Fedora 17/16, CentOS / RHEL 6.3 / 5.8 con una leggera modifica. Ci sono voluti forse 10 minuti. I miei comandi esatti sono mostrati di seguito. Si noti che il primo comando ha dovuto essere modificato rispetto a quanto mostrato nell'articolo. Il cambiamento è stato da epel-release-6-7.noarch.rpma epel-release-6-8.noarch.rpm.

  1. Come aggiungere un repository che fornisce PHP 5.4 in 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. Questo può sostituire senza problemi l'attuale versione di PHP in CentOS? Per me i seguenti comandi hanno funzionato e nessuna delle mie pagine Web PHP esistenti si è rotta. Il tuo chilometraggio può variare.

    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. Come posso tornare al repository ufficiale quando supporta PHP5.4? Non ho testato i comandi per rimuovere e reinstallare PHP dai repository CentOS, ma dovrebbero funzionare.

    # 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. Ci sarà il potenziale per rompere i moduli PHP che [sic] attualmente sto usando? Sì. Utilizzando una versione recente di CentOS (6.2?) Con Zend installato utilizzando il programma di installazione di Zend, l'aggiornamento sopra ha rotto Zend.

Tutti i comandi precedenti sono stati eseguiti come root. La migliore pratica è accedere come utente non privilegiato e utilizzare sudo. (Questa è una VM di sviluppo con un'istantanea corrente ...)

Inoltre, NON abilitare il repository Remi per impostazione predefinita: in passato sono diventato intelligente e abilitato per impostazione predefinita e le cose si sono rotte, anche con priorità del repository.


3
Le cose spesso diventano brutte con remi. Preferisco usare il repository iuscommunity per php aggiornato. Un altro modo è utilizzare il repository del server Zend, ma per me sembra un po 'eccessivo.
Kazimieras Aliulis,

1
@KazimierasAliulis Sfortunatamente il repository IUS induce l'inferno della dipendenza utilizzando nomi di file e pacchetti incompatibili. Non posso raccomandare di usarlo.
Michael Hampton

Descrizione molto approfondita. Dal momento che non ho un codice relativo al motore Zend, nel mio caso non dovrebbe importare, giusto?
Vicario

1
@MichaelHampton che uso yum --enablerepo=remi updatee si occupa di tutti i pacchetti php correlati, sembra una soluzione migliore. Il server funziona senza problemi da alcuni giorni, grazie per tutte le informazioni.
Vicario,

1
Nota: il ragazzo ha dimenticato di aggiungere phpall'elenco di installazione, il che mi ha causato molti problemi poiché apache non ha fornito file php, quindi non dimenticare di aggiungere questo quando si utilizza
eric.itzhak il

9

Un miglioramento rispetto all'altra risposta Webtatic:

1 Utilizzando la guida su http://www.webtatic.com/packages/php54/ :

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

2 Devi prima vedere quali pacchetti installati esistenti devono essere sostituiti, puoi farlo usando yum shell per combinare la rimozione di php-common e l'installazione di php54w-common in una transazione (quindi le dipendenze condivise non vengono rimosse)

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

Non dire "y" ai risultati, ma prendi nota di tutti i pacchetti menzionati in "Rimozione delle dipendenze", ad es

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

Se in questo elenco sono presenti pacchetti diversi da php *, non è possibile passare facilmente a Webtatic PHP 5.4, ma sarà necessario esaminare le alternative. Webtatic ha pacchetti sostitutivi per tutti i pacchetti php di base (vedere i pacchetti elencati nella pagina collegata in 1. per conferma), quindi non dovrebbero esserci problemi, a meno che non si utilizzino altri repository di terze parti che hanno pacchetti installati dipendenti dalla versione specifica di php installato.

Per il resto dell'installazione (ancora nella shell yum), basta rimuovere questi pacchetti e installare le loro controparti 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

Dovresti quindi vedere solo i pacchetti che hai impostato per essere rimosso e installato nell'elenco e puoi confermare l'installazione per passare. Tutti i servizi attualmente in esecuzione con php caricato dovranno essere riavviati, ad esempio httpd o php-fpm.

Per quanto riguarda questa "soluzione" senza soluzione di continuità, qualsiasi modifica del software in atto mentre gli utenti sono in grado di accedere al sito Web dovrebbe avere le conseguenze pienamente comprese. Le librerie condivise rimosse e aggiunte quando un processo non le ha già caricate potrebbero essere caricate mentre la libreria condivisa non è presente. È meglio eseguire aggiornamenti software come questo offline e preferibilmente testati prima su una macchina non di produzione per verificare che il processo funzioni come previsto.

3 Per passare a un ipotetico pacchetto php54 di base CentOS (CentOS 5 utilizzava il prefisso php53), basta eseguire i passaggi sopra sostituendo la rimozione di php con rimozione di php54w e l'installazione di php54w con installazione di php54 ad es.

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

Tuttavia, per quanto riguarda il passaggio all'ipotetica base php54, probabilmente non ci saranno alternative per alcuni pacchetti (ad esempio, non vi era alcuna estensione php53-pecl-memcache in CentOS 5) e Webtatic ha pacchetti che non sono disponibili in CentOS base (ad esempio php54w -pecl-zendopcache). Se mancano, di solito non hai altra scelta che usare pecl direttamente per installarli.

4 Qualsiasi aggiornamento di PHP può introdurre bug e i siti Web devono essere ritestati. Questo non è specifico per Webtatic, ma l'idea generale che nuove funzionalità introducano nuovi bug.

A differenza del repository di Remi nella risposta accettata, il repository ELt Webtatic non utilizza mai gli stessi nomi di pacchetto dei repository di base CentOS, quindi non sovrascriverà l'installazione / l'aggiornamento dei pacchetti a cui non si intende passare e come tale è abilitato per impostazione predefinita.

Disclaimer: sono il proprietario / manutentore di Webtatic


Il metodo yum shell è davvero buono per l'osservazione della dipendenza, grazie.
Vicario,

@Andy, ottimo resoconto dettagliato, grazie. Come posso cambiare il cli predefinito (e solo il cli) di PHP su 5.4 in CentOS 6?
Gaia,

0

puoi trovare php 5.4.9 qui per l'installazione di yum:

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

puoi fare un "rpm -qa | grep php" per vedere tutti i tuoi pacchetti php attuali e un "rpm -e" da rimuovere. non conosco i tuoi moduli attuali, ma vale la pena testarli prima dell'aggiornamento.


Hai un po 'risposto 1. Quando si tratta di manutenzione del server, non si tratta semplicemente di installarlo ed eseguire i test, potrei davvero usare più informazioni prima di fare qualsiasi cosa.
Vicario
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.