Wie aktualisiere ich mit yum auf die neueste PHP-Version in CentOS?

22

Ich habe einige Blog-Posts dazu gefunden, aber es fehlen Beschreibungen zu möglichen Nebenwirkungen.

Ich könnte wirklich einige Details zu diesen Schritten gebrauchen:

  1. Wie man ein Repo hinzufügt, das PHP 5.4 in yum bereitstellt
  2. Kann dies die aktuelle PHP-Version in CentOS nahtlos ersetzen?
  3. Wie kann ich wieder zum offiziellen Repo wechseln, wenn es PHP 5.4 unterstützt? (aktuell 5.3.3 in meinem System)
  4. Wird es ein Potenzial geben, PHP-Module zu beschädigen, die ich derzeit verwende?

Hinweis

Personen, die mit derselben Methode erfolgreich ein Upgrade für neuere Versionen durchgeführt haben, schlagen vor, bestimmte Versionen in der Frage zu entfernen. Während es gut ist, Versionen zu notieren, falls neuere Versionen tatsächlich etwas kaputtmachen, möchte ich die neueste erfolgreiche Version, die von der Community vorgeschlagen wurde, als Notiz behalten.

Fühlen Sie sich frei, dies zu aktualisieren, wenn Sie erfolgreich auf andere Versionen aktualisiert haben.

  • PHP-Versionen: 5.4, 5.5, 5.6
  • CentOS-Version: 5, 6
Vikary
quelle

Antworten:

19

Ich habe die Anweisungen von Install Apache / PHP 5.4.10 auf Fedora 17/16, CentOS / RHEL 6.3 / 5.8 mit einer leichten Modifikation befolgt . Es dauerte vielleicht 10 Minuten. Meine genauen Befehle sind unten aufgeführt. Beachten Sie, dass der erste Befehl gegenüber dem im Artikel gezeigten geändert werden musste. Der Wechsel erfolgte von epel-release-6-7.noarch.rpmbis epel-release-6-8.noarch.rpm.

  1. Wie füge ich ein Repo hinzu, das PHP 5.4 in yum bereitstellt?

    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. Kann dies die aktuelle PHP-Version in CentOS nahtlos ersetzen? Bei mir haben die folgenden Befehle funktioniert und keine meiner vorhandenen PHP-Webseiten ist kaputt gegangen. Ihr Kilometerstand kann variieren.

    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. Wie kann ich wieder zum offiziellen Repo wechseln, wenn es PHP5.4 unterstützt? Ich habe die Befehle zum Entfernen und erneuten Installieren von PHP aus CentOS-Repositorys nicht getestet, aber diese sollten funktionieren.

    # 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. Wird es ein Potenzial geben, PHP-Module zu beschädigen, die ich derzeit verwende? Ja. Bei Verwendung einer neueren Version von CentOS (6.2?) Mit Zend, das mit dem Zend-Installationsprogramm installiert wurde, wurde Zend durch das oben genannte Upgrade beschädigt.

Alle oben genannten Befehle wurden ausgeführt als root. Es wird empfohlen, sich als nicht privilegierter Benutzer anzumelden und zu verwenden sudo. (Dies ist eine Entwicklungs-VM mit einem aktuellen Schnappschuss ...)

Aktivieren Sie das Remi-Repository auch NICHT standardmäßig - in der Vergangenheit wurde ich clever und aktivierte es standardmäßig und die Dinge gingen kaputt, auch wenn das Repository Priorität hatte.

Jeff Benshetler
quelle
3
Mit remi wird es oft hässlich. Ich bevorzuge die Verwendung von iuscommunity repository für aktuelles PHP. Eine andere Möglichkeit ist die Verwendung von Zend Server Repo, aber es scheint mir ein bisschen überfordert zu sein.
Kazimieras Aliulis
1
@KazimierasAliulis Leider führt das IUS-Repo zu einer Hölle der Abhängigkeiten, indem inkompatible Paket- und Dateinamen verwendet werden. Ich kann es nicht empfehlen.
Michael Hampton
Sehr ausführliche Beschreibung. Da ich keinen Code für die Zend Engine habe, sollte es in meinem Fall keine Rolle spielen, oder?
Vicary
1
@MichaelHampton benutze ich yum --enablerepo=remi updateund es kümmert sich um alle verwandten PHP-Pakete, sieht aus wie eine bessere Lösung. Der Server läuft seit einigen Tagen ohne Probleme, danke für alle Infos.
Vizepräsident
1
Hinweis: Der Typ hat vergessen, phpder Installationsliste etwas hinzuzufügen , was mir viele Probleme bereitete, da Apache keine PHP-Dateien bediente. Vergessen Sie also nicht, dies hinzuzufügen, wenn Sie "
eric.itzhak"
9

Eine Verbesserung gegenüber der anderen Webtatic-Antwort:

1. Verwendung des Leitfadens unter http://www.webtatic.com/packages/php54/ :

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

2. Sie müssen zuerst sehen, welche vorhandenen installierten Pakete ersetzt werden müssen. Verwenden Sie dazu die YUM-Shell, um das Entfernen von PHP-Common und das Installieren von PHP-Common in einer Transaktion zu kombinieren (damit gemeinsame Abhängigkeiten nicht entfernt werden).

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

Sagen Sie nicht "y" zu den Ergebnissen, sondern notieren Sie sich alle unter "Entfernen von Abhängigkeiten" genannten Pakete, z

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

Wenn diese Liste andere Pakete als php * enthält, können Sie nicht nahtlos zu Webtatic PHP 5.4 wechseln, sondern müssen nach Alternativen suchen. Webtatic bietet Ersatzpakete für alle Basis-PHP-Pakete an (siehe die Pakete auf der Seite, auf die in 1. verwiesen wird, zur Bestätigung), sodass keine Probleme auftreten sollten, es sei denn, Sie verwenden andere Repositorys von Drittanbietern, auf denen Pakete installiert sind, die von der jeweiligen PHP-Version abhängig sind Eingerichtet.

Für den Rest der Installation (immer noch in Yum Shell) entfernen Sie einfach diese Pakete und installieren ihre Gegenstücke zu 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

Sie sollten dann nur die Pakete in der Liste sehen, die Sie zum Entfernen und Installieren festgelegt haben, und Sie können die Installation zum Umschalten bestätigen. Alle Dienste, die derzeit mit geladenem PHP ausgeführt werden, müssen neu gestartet werden, beispielsweise httpd oder php-fpm.

Da dies "nahtlos" ist, sollten alle Softwareänderungen, die auftreten, während Benutzer auf die Website zugreifen können, die Konsequenzen haben, die vollständig verstanden werden. Freigegebene Bibliotheken, die entfernt und hinzugefügt werden, wenn sie noch nicht von einem Prozess geladen wurden, können möglicherweise geladen werden, während die freigegebene Bibliothek nicht vorhanden ist. Es ist besser, Software-Upgrades wie dieses offline durchzuführen und sie vorzugsweise zuerst auf einem Nicht-Produktions-Computer zu testen, um zu überprüfen, ob der Prozess wie erwartet funktioniert.

3 . Um zu einem hypothetischen CentOS-Basis-PHP54-Paket (CentOS 5 verwendet PHP53-Präfix) zu wechseln, führen Sie einfach die obigen Schritte aus und ersetzen PHP-Entfernung durch PHP54W-Entfernung und PHP54W-Installation durch PHP54-Installation, z

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

Für die Umstellung auf die hypothetische Basis php54 wird es jedoch wahrscheinlich keine Alternativen für einige Pakete geben (z. B. gab es in CentOS 5 keine Erweiterung für php53-pecl-memcache) und Webtatic verfügt über Pakete, die in CentOS base nicht verfügbar sind (z. B. php54w) -pecl-zendopcache). Wenn sie fehlen, haben Sie normalerweise keine andere Möglichkeit, als sie mit pecl direkt zu installieren.

4. Jedes PHP-Upgrade kann Fehler verursachen, und Websites sollten erneut getestet werden. Dies ist nicht spezifisch für Webtatic, sondern die allgemeine Vorstellung, dass neue Funktionen neue Fehler verursachen.

Im Gegensatz zu Remis Repository in der akzeptierten Antwort verwendet das Webtatic EL6-Repository niemals dieselben Paketnamen wie CentOS-Basis-Repositorys. Daher wird die Installation / Aktualisierung von Paketen, zu denen Sie nicht wechseln möchten, nicht überschrieben und ist daher standardmäßig aktiviert.

Haftungsausschluss: Ich bin der Eigentümer / Verwalter von Webtatic

Andy
quelle
Die Yum-Shell-Methode ist wirklich gut für die Beobachtung der Abhängigkeit, danke.
Vicary
@Andy, super ausführlich, danke. Wie ändere ich die Standard-CLI (und nur die CLI) von PHP auf 5.4 in CentOS 6?
Gaia
0

Sie können PHP 5.4.9 hier für die Yum-Installation finden:

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

Sie können ein "rpm -qa | grep php" ausführen, um alle Ihre aktuellen PHP-Pakete anzuzeigen, und ein "rpm -e", um sie zu entfernen. Ich kenne Ihre aktuellen Module nicht, aber es lohnt sich, sie vor dem Upgrade zu testen.

TheDayIsDone
quelle
Sie haben ein bisschen geantwortet 1. Wenn es um Serverwartung geht, ist es nicht einfach, sie zu installieren und Tests durchzuführen, ich könnte wirklich mehr Informationen verwenden, bevor ich etwas tue.
Vicary