
Es ist schon eine Weile her, seit diese Art von Frage hier gestellt wurde. Vielleicht hat sich die empfohlene Lösung geändert.
Ich habe einen CentOS 5.4-Mailserver, auf dem RoundCube Webmail läuft. Standardmäßig erwartet RoundCube PHP Version 5.2 oder höher. CentOS 5 steckt bei Revision 5.1.6 fest, mit Backports bestimmter Funktionen aus 5.2. Ich habe die PHP-Prüfung für Roundcube deaktiviert und sie funktioniert gut. Eines der Plugins, die ich verwenden möchte, verwendet jedoch eine in PHP 5.2 eingeführte Methode.
Was ist in diesem Fall aufgrund der Bindung von PHP und Postgres/MySQL der beste Weg, die PHP-Version von 5.1.6 auf 5.2.x zu aktualisieren? Ich habe Repos von Drittanbietern gesehen, CentOS-Tests, Fedora … oder ich könnte aus dem Quellcode kompilieren. Ich möchte dieses System in einem stabilen Zustand halten, damit es bei der nächsten Update-Runde nicht auseinanderfällt.
Irgendwelche Empfehlungen?
Antwort1
Ich habe dies viele Male getan mit demAtomische ReposVereinfacht ausgedrückt sind in den meisten Situationen nur drei Schritte erforderlich:
wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh
yum update php
service httpd restart
Ich kann natürlich nicht garantieren, dass es bei Ihnen funktioniert, aber für mich ist dies die Standardmethode geworden.
Antwort2
Installieren Sie einfach das Remi-Repository. Und führen Sie aus:
yum update -y
und warten Sie, bis die Aktualisierungen abgeschlossen sind. Starten Sie dann Ihren VPS mit init neu:
init 6
Jetzt haben Sie PHP auf Ihrem System erfolgreich aktualisiert.
Antwort3
Ich würde sagen, dass jede dieser Methoden KANN einwandfrei funktionieren, aber Sie werden es erst wissen, wenn Sie es ausprobieren. Stellen Sie also besser sicher, dass Ihre Backups in Ordnung sind. Allerdings ist das Aktualisieren von PHP unter Linux viel einfacher als unter Windows, und es würde mich überraschen, wenn Sie Probleme hätten. Vorausgesetzt, Ihre Installation ist, wenn nicht Vanilla, so doch zumindest eine gängige Installation, sollten Sie mit einem vorgefertigten RPM gut zurechtkommen.
Es ist möglich zuFühren Sie verschiedene PHP-Versionen auf demselben Webserver aus; leider können Sie eines nur als Apache-Modul ausführen, sodass Sie mit der CGI-Schnittstelle herumspielen müssen.
Das Schöne an modernen RPM ist, dassSie können die Installation rückgängig machen. Das macht es etwas einfacher.
Wenn Sie hingegen aus dem Quellcode erstellen, können Sie es einfach in einem anderen Verzeichnis erstellen. Dann müssen Sie nur noch ändern, welches Mod PHP Apache lädt, und den Speicherort der Datei php.ini ändern, und schon haben Sie ein Upgrade durchgeführt, ohne dass Ihre aktuelle Konfiguration gefährdet wird.
Antwort4
Ich bin davon überzeugt, dass es eine Reihe von Lösungen gibt und dass die von Ihnen gewählte Lösung von Ihrem Systemadministrationsstil abhängt.
Der 'einfache' Weg ist, PHP und verwandte Pakete aus einem anderen Repository zu installieren,wie dieser. Der Vorteil liegt darin, dass es weniger Zeit in Anspruch nimmt. Der Nachteil besteht darin, dass Sie für die Binärdateien auf Ihrem System einer externen Quelle vertrauen, sowohl was zeitnahe Updates als auch die Aufrechterhaltung der Integrität und Sicherheit der Pakete betrifft.
Der „schwierige“ Weg ist, Ihre eigene zu kompilieren. Ich sage, es ist „schwierig“, aber es ist wirklich nicht so schlimm. Ich habe alle ./configure-Befehle gespeichert, sodass ich bei der Veröffentlichung einer neuen Version einfach dieselben Schalter verwenden muss, um meine PHP-Umgebung wieder in den Zustand der vorherigen Versionen zu versetzen.
Für Systeme ohne besondere Anforderungen verwende ich den RPM-Router (tatsächlich funktioniert 5.1 für diese Systeme gut), aber für Systeme mit benutzerdefinierten PHP-Umgebungen kompiliere ich immer noch aus dem Quellcode.
Ein weiterer Vorteil der eigenständigen PHP-Kompilierung besteht darin, dass Sie die Software und ihre Funktionsweise auf Ihrem Server tatsächlich besser verstehen und besser darüber lernen. Darauf können Sie stolz sein und es wird Sie von anderen Systemadministratoren abheben!