Ich muss meine PHP-Anwendungen mit mehreren Versionen von PHP 5.x testen, z. B. PHP 5.0.0 und PHP 5.2.8.
Gibt es eine Möglichkeit, einen Entwicklungs-LAMP-Server so zu konfigurieren, dass ich Anwendungen mit mehreren Versionen von PHP5 schnell testen kann?
Antworten:
Eine Möglichkeit, dies zu tun, besteht darin, Ihre Hauptversion von PHP mit mod_php einzurichten und alle anderen über Fast CGI an verschiedenen Ports (dh 81, 82, 83 usw.) auszuführen. Dies garantiert jedoch kein vollständig konsistentes Verhalten.
quelle
Mit CentOS können Sie eine Kombination aus fastcgi für eine PHP-Version und php-fpm für die andere Version verwenden, wie hier beschrieben:
https://web.archive.org/web/20130707085630/http://linuxplayer.org/2011/05/intall-multiple-version-of-php-on-one-server
Basierend auf CentOS 5.6, nur für Apache
1. Aktivieren Sie rpmforge und epel yum repository
2. Installieren Sie php-5.1
Die CentOS / RHEL 5.x-Serie hat PHP-5.1 im Lieferumfang. Installieren Sie es einfach mit yum, z.
3. Kompilieren und installieren Sie PHP 5.2 und 5.3 aus dem Quellcode
Für PHP 5.2 und 5.3 finden wir viele RPM-Pakete im Internet. Sie alle stehen jedoch in Konflikt mit dem mit CentOS gelieferten PHP. Wir sollten sie daher besser aus Soure erstellen und installieren. Dies ist nicht schwierig. Es geht darum, PHP an einem anderen Ort zu installieren.
Bei der Installation von PHP als Apache-Modul können wir jedoch nur eine Version von PHP gleichzeitig verwenden. Wenn wir zum Beispiel zur gleichen Zeit eine andere Version von PHP auf demselben Server ausführen müssen, benötigen verschiedene virtuelle Hosts möglicherweise eine andere Version von PHP. Glücklicherweise kann das coole FastCGI und PHP-FPM helfen.
Erstellen und installieren Sie PHP-5.2 mit aktiviertem FastCGI
1) Installieren Sie die erforderlichen Entwicklungspakete
2) Kompilieren und installieren
3) Erstellen Sie ein Fastcgi-Wrapper-Skript
Erstellen Sie die Datei /usr/local/php52/bin/fcgiwrapper.sh
PHP-fpm bestätigen
Bearbeiten Sie /etc/php53/php-fpm.conf und ändern Sie einige Einstellungen. Dieser Schritt dient hauptsächlich dazu, einige Einstellungen zu kommentieren. Sie können den Wert anpassen, wenn Sie möchten.
Starten Sie dann fpm
Installieren und einrichten Sie mod_fastcgi, mod_fcgid
Richten Sie virtuelle Hosts ein und testen Sie sie
1) Fügen Sie die folgende Zeile zu / etc / hosts hinzu
2) Erstellen Sie ein Webdokument-Stammverzeichnis und legen Sie eine index.php darunter ab, um anzuzeigen, dass phpinfo zum Benutzer root wechselt
Hinweis: Das leere Verzeichnis / var / www / fcgi-bin ist erforderlich. ENTFERNEN SIE ES NICHT SPÄTER
3) Erstellen Sie eine Apache-Konfigurationsdatei (an httpd.conf anhängen)
4) Starten Sie Apache neu. Besuchen Sie die 3 Websites, um phpinfo anzuzeigen und das Ergebnis zu validieren. dh:
Wenn alles in Ordnung ist, können Sie einen der 3 virtuellen Hosts als Vorlage verwenden, um einen neuen virtuellen Host mit der gewünschten PHP-Version zu erstellen.
quelle
Mehrere Instanzen von Apache + PHP zu haben, hat mich nie wirklich gereizt, aber es ist wahrscheinlich der einfachste Weg, dies zu tun. Wenn Sie keine Lust auf KISS haben ... hier ist eine Idee.
Bringen Sie Ihren Apache zum Laufen und versuchen Sie, ihn wie Debian und Ubuntu zu konfigurieren, z. B. Verzeichnisse für geladene Module. Ihr Apache Conf kann folgende Zeilen verwenden:
Erstellen Sie dann Ihre erste Version von PHP und geben Sie ihr ein Präfix, in dem die Versionsnummer explizit enthalten ist, z. B. /usr/local/php/5.2.8, /usr/local/php/5.2.6 ...
Das conf / load würde ungefähr so aussehen:
php5.2.6.load
php5.2.8.load
Um die Version zu wechseln, müssen Sie lediglich die Lade- und Konfigurationsdateien aus dem Verzeichnis ändern, das Apache für die Dateien einer anderen Version einschließt. Sie können dies mit einem einfachen Bash-Skript automatisieren (löschen Sie die eigentliche Datei, kopieren Sie die Datei mit den alternativen Versionen und starten Sie Apache neu.
Ein Vorteil dieses Setups ist, dass alles konsistent ist, solange Sie die php.ini in Bezug auf Optionen und Module gleich halten (was Sie sowieso mit CGI tun müssten). Sie gehen alle durch SAPI. Ihre Anwendungen benötigen keinerlei Änderungen und müssen auch keine relativen URLs verwenden.
Ich denke, das sollte funktionieren, aber ich habe es auch nicht ausprobiert und werde es wahrscheinlich auch nicht tun, da ich nicht die gleichen Anforderungen habe wie Sie. Kommentieren Sie, wenn Sie es jemals versuchen.
quelle
Hinweis: Die folgende Methode funktioniert unter Windows.
Eine alternative Methode (wenn es in Ordnung ist, jeweils eine einzelne Version von PHP auszuführen) besteht darin, mehrere Apache-Dienste zu definieren, von denen jeder eine andere PHP-Version verwendet.
Verwenden Sie zunächst die Bedingungen in der Apache-Konfigurationsdatei:
Erstellen Sie jetzt mit httpd.exe zwei separate Dienste über die Befehlszeile (erhöht auf Administrator):
Jetzt können Sie jeweils einen der oben genannten Dienste starten (sollte einer vor dem Starten des anderen herunterfahren).
Wenn Sie Apache zuvor als Dienst installiert haben, können Sie diesen mit dem folgenden Befehl entfernen (ersetzen Sie den Dienstnamen durch den von Ihnen verwendeten):
Ein weiterer Hinweis ist, dass ich persönlich ein "Benachrichtigungsbereich-Symbolprogramm" namens "Seobiseu" verwende, um Dienste nach Bedarf zu starten und zu stoppen. Ich habe die beiden oben genannten Dienste hinzugefügt.
quelle
Listen 80
undListen 81
in jedemifdefine
sind.Da ich verstehe, dass Sie wahrscheinlich über einen lokalen / Desktop-Computer sprechen und wahrscheinlich weiterhin über einen lokalen / Desktop-Computer sprechen möchten , werde ich eine Alternative für Sie herausbringen, nur für den Fall, dass dies Ihnen oder jemand anderem helfen könnte:
Richten Sie mehrere virtuelle Serverinstanzen in der Cloud ein und teilen Sie Ihren Code als Git-Repository zwischen ihnen (oder Mercurial, ich nehme an, obwohl ich keine persönliche Erfahrung habe, brauchen Sie nur etwas Dezentrales). Dies hat den Vorteil, dass Sie einer Produktionserfahrung so nahe wie möglich kommen. Wenn Sie Erfahrung mit der Einrichtung von Servern haben, ist dies nicht so kompliziert (oder teuer, wenn Sie nur einen Server hochfahren möchten, tun Sie, was Sie tun müssen). Drehen Sie es dann wieder herunter, dann sprechen Sie von ein paar Cent bis zu 50 Cent, bis zu ein paar Dollar, wenn Sie es einfach laufen lassen.
Ich mache heutzutage meine gesamte Projektentwicklung in der Cloud und fand es viel einfacher, die Infrastruktur zu verwalten als jemals zuvor, wenn lokale / nicht virtualisierte Installationen verwendet wurden, und dies macht diese Art von Side-by-Side-Szenario fair geradeaus. Ich wollte die Idee nur rauswerfen, wenn Sie nicht darüber nachgedacht hätten.
quelle
Ich habe gerade erfolgreich ein Downgrade von PHP5.3 unter Ubuntu 10 durchgeführt.
Dazu habe ich folgendes Skript verwendet:
Für alle, die nicht wissen, wie man Skripte über die Befehlszeile ausführt, gibt es hier ein kurzes Tutorial:
Diese 6 Schritte erstellen ein Skript in einem Ordner namens "bin" in Ihrem Home-Verzeichnis. Sie können dieses Skript dann ausführen, indem Sie den folgenden Befehl aufrufen:
Oulia!
Hoffe das hilft einigen von euch!
Als Referenz habe ich hier das Skript erhalten: PHP5.2.10 für Ubuntu 10
Es gibt mehrere Leute dort, die alle bestätigen, dass dies funktioniert, und es hat mir sehr gut gefallen.
quelle
Rasmus Lerdorf, der PHP entwickelt hat, unterhält eine aktive Vagrant-Lösung, die Ihre Anforderungen zu erfüllen scheint. Es ermöglicht den schnellen Wechsel zwischen PHP-Versionen und unterstützt derzeit mehr als 20 verschiedene Versionen. Es wird mit einem Nginx-Server ausgeliefert, kann jedoch mit einer vorkonfigurierten Einstellung problemlos auf Apache2 umgestellt werden. Es unterstützt auch MySQL ab Werk.
Auf diese Weise haben Sie Zugriff auf alle Versionen von PHP, die auf zwei der wichtigsten Webserver bereitgestellt werden können, in einer netten Vagabundbox, die von dem großen Mann hinter PHP verwaltet wird.
Für weitere Informationen möchte ich auf den Vortrag von Herrn verweisen. Lerdorf unter https://youtu.be/6XnysJAyThs?t=2864
Das Github-Repository mit der Vagrant-Lösung finden Sie unter https://github.com/rlerdorf/php7dev
quelle
Auf meiner Box laufen mehrere Projekte. Wenn Sie bereits mehr als eine Version installiert haben, sollte Ihnen dieses Bash-Skript beim einfachen Wechsel helfen. Im Moment habe ich PHP5, PHP5.6 und PHP7.0, die ich je nach Projekt, an dem ich arbeite, oft hin und her wechsle. Hier ist mein Code.
Fühlen Sie sich frei zu kopieren. Stellen Sie sicher, dass Sie verstehen, wie der Code funktioniert. Dies ist für den Webhostin. Meine lokale Box Meine Mods sind unter / etc / apache2 / mods-enabled / gespeichert
quelle
Zum Testen führe ich nur mehrere Instanzen von httpd unter verschiedenen IP-Adressen aus, sodass php7 auf 192.168.0.70 und php5.6 auf 192.168.0.56 ausgeführt werden. In der Produktion habe ich eine Site, auf der ein alter Oscommerce mit PHP5.3 ausgeführt wird, und ich habe nur eine andere Conf-Datei für die Site
Es ist auch eine saubere Möglichkeit, verschiedene
php.ini
Dateien für verschiedene Sites zu haben. Wenn Sie nur ein paar Websites haben, ist dies eine gute Möglichkeit, die Dinge zu organisieren, und Sie müssen sich nicht um mehr als eine Website gleichzeitig kümmern, wenn Sie etwas aktualisierenquelle