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


Ich habe einige Blog-Posts darüber gefunden, aber es fehlt eher an Beschreibungen zu möglichen Nebenwirkungen.

Ich könnte wirklich einige detaillierte zu diesen Schritten verwenden:

  1. Wie man ein Repo hinzufügt, das PHP 5.4 in yum zur Verfügung stellt
  2. Kann dies die aktuelle PHP-Version in CentOS nahtlos ersetzen?
  3. Wie kann ich zurück zum offiziellen Repo wechseln, wenn PHP 5.4 unterstützt wird? (aktuelle 5.3.3 in meinem System)
  4. Wird es möglich sein, PHP-Module, die ich derzeit verwende, zu zerstören?

Hinweis

Personen haben in neueren Versionen erfolgreich mit der gleichen Methode aktualisiert und empfehlen, bestimmte Versionen in der Frage zu entfernen. Während es gut ist, Versionen festzuhalten, falls neuere Versionen tatsächlich etwas kaputt machen, möchte ich die letzte, von der Community vorgeschlagene, erfolgreiche Version als Notiz behalten.

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

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

22
2017-12-11 08:45


Ursprung




Antworten:


Ich folgte den Anweisungen von Installieren Sie Apache / PHP 5.4.10 auf Fedora 17/16, CentOS / RHEL 6.3 / 5.8 mit einer leichten Änderung. Es dauerte vielleicht 10 Minuten. Meine genauen Befehle sind unten gezeigt. Beachten Sie, dass der erste Befehl geändert werden musste, was im Artikel angezeigt wird. Die Veränderung war von epel-release-6-7.noarch.rpm zu epel-release-6-8.noarch.rpm.

  1. Wie fügt man einen Repo hinzu, der 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? Für mich funktionierten die folgenden Befehle und keine meiner bestehenden PHP-Webseiten brach. Ihre Laufleistung 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 zurück zum offiziellen Repo wechseln, wenn PHP5.4 unterstützt wird? 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 möglich sein, PHP-Module, die ich derzeit verwende, zu zerstören? Ja. Unter Verwendung einer aktuellen Version von CentOS (6.2?) Mit Zend, das mit dem Zend-Installer installiert wurde, brach das obige Upgrade Zend.

Alle obigen Befehle wurden als ausgeführt root. Es empfiehlt sich, sich als nicht privilegierter Benutzer anzumelden und zu verwenden sudo. (Dies ist eine Entwicklungs-VM mit einem aktuellen Snapshot ...)

Aktivieren Sie das Remi-Repository auch NICHT standardmäßig - in der Vergangenheit wurde ich schlau und aktivierte es standardmäßig und es ging sogar mit der Repository-Priorität kaputt.


19
2017-12-28 12:22



Dinge werden oft mit Remi hässlich. Ich bevorzuge es, iuscommunity Repository für aktuelle PHP zu verwenden. Eine andere Möglichkeit ist die Verwendung von Zend Server Repo, aber es scheint ein bisschen Overhead für mich zu sein. - Kazimieras Aliulis
@KazimierasAliulis Unglücklicherweise induziert der IUS-Repo Abhängigkeitshölle, indem er inkompatible Paket- und Dateinamen verwendet. Ich kann es nicht empfehlen. - Michael Hampton♦
Sehr ausführliche Beschreibung. Da ich keinen Code in Bezug auf Zend-Engine habe, sollte es in meinem Fall keine Rolle spielen, oder? - Vicary
@MichaelHampton benutze ich yum --enablerepo=remi update und es kümmert sich um alle verwandten PHP-Pakete, sieht wie eine bessere Lösung aus. Der Server läuft seit einigen Tagen ohne Probleme, danke für alle Infos. - Vicary
Hinweis: Der Typ hat vergessen hinzuzufügen php zu der Installationsliste, die mir viele Probleme verursachte, da Apache keine PHP-Dateien bereitstellte, also vergessen Sie nicht, dies bei der Verwendung hinzuzufügen - eric.itzhak


Eine Verbesserung gegenüber der anderen Webtatic-Antwort:

1. Verwenden der Anleitung auf 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. Sie können dies tun, indem Sie yum shell verwenden, um php-common zu entfernen und php54w-common in einer Transaktion zu installieren (so dass die gemeinsamen 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 alle Pakete, die in "Entfernen für Abhängigkeiten", z.

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

Wenn es andere Pakete als php * in dieser Liste gibt, können Sie nicht nahtlos zu Webtatic PHP 5.4 wechseln, sondern müssen Alternativen untersuchen. Webtatic hat Ersatzpakete für alle Basis-PHP-Pakete (siehe die Pakete auf der Seite, die mit 1. zur Bestätigung verlinkt sind), so dass es keine Probleme geben sollte, außer Sie verwenden andere 3rd-Party-Repositories, deren Pakete abhängig von der jeweiligen PHP-Version installiert sind Eingerichtet.

Für den Rest der Installation (immer noch in der yum-Shell), entfernst du einfach diese Pakete und installierst ihre php54w- * Gegenstücke:

> 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 sehen, die Sie in der Liste entfernt und installiert haben, und Sie können die Installation zum Umschalten bestätigen. Alle Dienste, die gerade mit php geladen werden, müssen neu gestartet werden, zum Beispiel httpd oder php-fpm.

Da dies "nahtlos" ist, sollten alle Softwareänderungen, die während des Zugriffs auf die Website auftreten, die Konsequenzen vollständig verstanden haben. Freigegebene Bibliotheken, die entfernt und hinzugefügt werden, wenn ein Prozess sie nicht bereits geladen hat, könnten möglicherweise geladen werden, während die gemeinsame Bibliothek nicht vorhanden ist. Es ist besser, Software-Upgrades wie diese offline zu machen und vorzugsweise zuerst auf einer Nicht-Produktionsmaschine zu testen, um zu überprüfen, ob der Prozess wie erwartet funktioniert.

3 . Um zu einem hypothetischen CentOS-Basis-php54-Paket (CentOS 5 verwendetes php53-Präfix) zu wechseln, führen Sie einfach die obigen Schritte aus, wobei php-Entfernung durch php54w-Entfernung ersetzt wird und php54w-Installation mit 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

Wie bei der Umstellung auf die hypothetische Basis php54 wird es wahrscheinlich für einige Pakete keine Alternativen geben (zB gab es keine php53-pecl-memcache-Erweiterung in CentOS 5) und Webtatic hat Pakete, die in CentOS-Basis nicht verfügbar sind (zB php54w -pecl-Zendopcache). Wenn sie fehlen, haben Sie normalerweise keine andere Möglichkeit, pecl direkt zu verwenden, um sie zu installieren.

4. Jede PHP-Aktualisierung kann zu Fehlern führen, und Websites sollten erneut getestet werden. Dies ist nicht spezifisch für Webtatic, sondern die allgemeine Idee, dass neue Features neue Bugs einführen.

Im Gegensatz zu Remis Repository in der akzeptierten Antwort verwendet das Webtatic EL6-Repository niemals die gleichen Paketnamen wie CentOS-Basisrepositorys. Daher wird die Installation / Aktualisierung von Paketen, auf die nicht umgeschaltet werden soll, nicht überschrieben und ist daher standardmäßig aktiviert.

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


9
2018-05-19 18:51



Die Yum-Shell-Methode ist wirklich gut für die Abhängigkeitsbeobachtung, danke. - Vicary
@Andy, super detaillierte schreiben, danke. Wie ändere ich das Standardcli (und nur das cli) von PHP zu 5.4 in CentOS 6? - Gaia


Hier finden Sie PHP 5.4.9 für die Yum-Installation:

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

Du kannst ein "rpm -qa | grep php" machen, um alle deine aktuellen PHP-Pakete zu sehen und ein "rpm -e" zu entfernen. Ich kenne Ihre aktuellen Module nicht, aber es lohnt sich, sie vor dem Upgrade zu testen.


0
2017-12-16 08:32



Sie haben Folgendes beantwortet: 1. Wenn es um Serverwartung geht, wird es nicht einfach installiert und Tests ausgeführt, ich könnte wirklich mehr Informationen verwenden, bevor ich irgendetwas mache. - Vicary