Ausführen von zwei PHP-Versionen auf demselben Server

Lesezeit: 7 Minuten

Ich habe zwei Projekte auf dem lokalen Server, ein Projekt läuft mit PHP5.6 und das andere mit PHP7.0. Wäre es nun möglich, diese beiden Versionen basierend auf den Projekten zu aktivieren? Hinzufügen habe ich schon versucht AddHandler application/x-httpd-php7 .php in einem der htaccess-Projekte, aber es funktioniert nicht. Derzeit sind PHP7.0 und PHP5.6-fpm bereits auf dem Server installiert. Unten ist der Screenshot der phpinfo.

Geben Sie hier die Bildbeschreibung ein

  • Was ist die Ausgabe von Ihrem mod-enabled in Ihrem Apache-Verzeichnis? Sind Sie sicher, dass Sie dort sowohl php5.x als auch php7.0x aktiviert haben?

    – hasan

    9. März 17 um 13:41 Uhr

  • askubuntu.com/questions/50344/… Dies

    – Vasil Schaddix

    9. März 17 um 13:42 Uhr

  • Hallo @HassanAhmed, nur php7.0 und php5.6-fpm sind aktiviert. Wenn ich php5.6 aktiviere, ist Apache abgestürzt. Vielleicht ist es verwirrt, welche Version Sie bekommen sollen.

    – Makubex

    9. März 17 um 13:49 Uhr

  • Schau mal Docker an

    – yBrodsky

    9. März 17 um 14:07 Uhr

  • Schauen Sie sich diese sehr gut erklärte Antwort für debian / apache an stackoverflow.com/questions/45033511/…

    – Erwan

    1. Februar 18 um 11:48 Uhr


1644323167 328 Ausfuhren von zwei PHP Versionen auf demselben Server
Makubex

Also nachdem ich den ganzen Tag bei Google gesucht habe. Ich habe es geschafft, meine beiden Projekte in FastCgi auf verschiedenen PHP-Versionen auszuführen. Danke an die Jungs von diesem Forum. Ich habe alles deinstalliert, einschließlich Apache, und von vorne begonnen. Im Folgenden sind die Schritte aufgeführt, mit denen ich zwei Versionen von PHP auf meinem lokalen Server aktiviert habe. Übrigens, mein Computer läuft auf Linux Mint 18.

  1. Angenommen, Sie haben Apache bereits installiert, einen virtuellen Host für die beiden Projekte erstellt und die erforderlichen PHP-PPAs hinzugefügt. Nennen wir die Projekte site56.local für PHP 5.6 und site70.local für PHP7.0. Installieren php5.6-fpm und php7.0-fpm durch Laufen:

    sudo apt-get install php5.6-fpm
    sudo apt-get install php7.0-fpm
    
  2. Erstellen Sie zwei Dateien unter /usr/lib/cgi-bin/ (Ehrlich gesagt weiß ich nicht, ob dieser Schritt noch notwendig ist), und speichern Sie:

    sudo nano /usr/lib/cgi-bin/php56-fcgi
    sudo nano /usr/lib/cgi-bin/php70-fcgi
    
  3. Öffnen Sie die php56-conf-Datei /etc/apache2/conf-available/php5.6-fpm.conffügen Sie diese Konfiguration hinzu und speichern Sie:

    <IfModule mod_fastcgi.c>
        AddHandler php56-fcgi .php
        Action php56-fcgi /php56-fcgi
        Alias /php56-fcgi /usr/lib/cgi-bin/php56-fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization
        Action php70-fcgi /php70-fcgi
        Alias /php70-fcgi /usr/lib/cgi-bin/php70-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
    </IfModule>
    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
    
  4. Aktivieren Sie nun die neue Apache-Konfiguration:

    sudo a2enconf php5.6-fpm
    
  5. Wenn Sie php5.6 und php5.7 installiert haben, stellen Sie sicher, dass Sie diese beiden deaktivieren und Apache neu starten:

    sudo a2dismod php5.6 php7.0
    sudo systemctl restart apache2
    
  6. Ein … kreieren .htacces Datei in dem Projekt, das auf php7.0 laufen soll, und fügen Sie diesen Handler hinzu:

    AddHandler php70-fcgi .php
    
  7. Erstellen Sie nun eine phpinfo-Datei zu den beiden Projekten und wenn Sie so etwas sehen, dann herzlichen Glückwunsch!

PS: Stellen Sie sicher, dass Sie htaccess in Ihrer apache2.conf oder httpd.conf aktivieren

site56.local/phpinfo.php:
Geben Sie hier die Bildbeschreibung ein

site70.local/phpinfo.php:
Geben Sie hier die Bildbeschreibung ein

  • Falls Sie PHP 5.5.9 anstelle von PHP 5.6 haben möchten, müssen Sie php5-fpm installieren. Außerdem sollte der Inhalt der Datei php5-fpm.conf wie in diesem Link aussehen: pastebin.com/3UgdxNV7

    – Accord_Typ

    18. Dezember 17 um 3:14 Uhr


  • Ich musste auch laufen sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml wie in der akzeptierten Antwort beschrieben Hier

    – Paul

    12. April 18 um 15:03 Uhr

  • Ich weiß nicht, ob Sie Ihre Lösung Schritt für Schritt überhaupt richtig ausprobiert haben, da ich diesen Fehler erhalte, wenn ich Apache neu starte, nachdem ich die php5.6-fpm-Konfiguration aktiviert habe Alias takes 1-2 arguments, a fakename and a realname, or a realname in a Location

    – Morgan

    25. Mai 19 um 22:47 Uhr


  • es ist wirklich großartig! aber ich brauche Centos

    – Strahl

    24. Juli 2020 um 11:40 Uhr

Stellen Sie zunächst sicher, dass alle PHP-bezogenen Konfigurationen deaktiviert sind, indem Sie die folgenden Befehle ausführen:

# ls -la /etc/apache2/conf-enabled | grep php

# ls -la /etc/apache2/mods-enabled | grep php

Richten Sie für eine bestimmte Site eine andere Version von PHP-FPM ein:

Fügen Sie die folgende Zeile in Ihre vorhandene VirtualHost-Datei ein.

Include "conf-available/php7.2-fpm.conf"

Beispielsweise,

# vim /etc/apache2/sites-enabled/symfony.local.conf

<VirtualHost *:80>
    ServerName symfony.local

    Include "conf-available/php7.2-fpm.conf"

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/symfony.local/curr/public

    <Directory /var/www/symfony.local/curr/web>
        AllowOverride All
    </Directory>
</VirtualHost>

  • Ich habe sowohl php7 als auch php5 auf meinem lokalen Rechner installiert. aber wenn ich wie von Ihnen vorgeschlagen “ls -la /etc/apache2/conf-enabled | grep php” ausführe, erhalte ich eine leere Ausgabe. Habe ich etwas vergessen? Danke.

    – abc

    9. Mai 18 um 13:11 Uhr

  • Eine leere Ausgabe ist das erwartete Ergebnis. Eine Liste der verfügbaren Konfigurationen und Module finden Sie hier: “ls -l /etc/apache2/conf-available/” und “ls -l /etc/apache2/mods-available/”

    – Jun Hsieh

    10. Mai 18 um 4:56 Uhr


1644323169 234 Ausfuhren von zwei PHP Versionen auf demselben Server
JGL

Es funktioniert nicht für Debian 9 Stretch. Ich habe eine Weile gebraucht, um herauszufinden, was zu tun ist, aber am Ende habe ich eine Lösung gefunden, die noch einfacher erscheint:

sudo apt-get install php5.6-fpm

sudo apt-get install php7.0-fpm

sudo a2enconf php5.6-fpm

Wenn Sie php5.6 und php5.7 installiert haben, stellen Sie sicher, dass Sie diese beiden deaktivieren und Apache neu starten.

sudo a2dismod php5.6 php7.0

sudo systemctl restart apache2

Zu diesem Zeitpunkt müssen alle Ihre Websites mit PHP 5.6 funktionieren.

Fügen Sie für die Sites, die PHP 7 benötigen, diese Zeile im vhost hinzu:

ProxyPassMatch "^/(.*.php(/.*)?)$" "unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/path/to/my/main/file"

Es sollte den Trick machen 🙂

Ich habe versucht, die Lösung von Makubex zu implementieren, und es hat funktioniert. Es gibt nur ein Problem, das ich mit einer neu installierten LAMP hatte, und das war die Tatsache, dass fastcgi nicht aktiviert war. Ich habe gerade php mit dem folgenden Skript neu installiert und danach fastcgi aktiviert.

sudo apt-get install libapache2-mod-fastcgi php5.6-fpm php5.6 php5.6-dev php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml php7.1-fpm libapache2-mod-fastcgi php7.1-fpm php7.1 php7.1-dev php7.1-mbstring php7.1-mysql php7.1-zip php7.1-gd php7.1-xml php7.1-curl php7.1-intl php7.1-json php7.1-mcrypt

Und dann:

a2enmod actions
a2enmod fastcgi

Danach funktionierte die Lösung einwandfrei. Ich habe die beiden oben von Führen Sie mehrere PHP-Versionen auf demselben Server mit php-fpm und xdebug unter Ubuntu 16.04 aus

Ausfuhren von zwei PHP Versionen auf demselben Server
Hiren Makwana

Sie können dies mithilfe von .htaccess-Dateien tun

Zuerst müssen Sie das erforderliche FPM mit installieren

     sudo apt install php7.2-fpm

Führen Sie dann den folgenden Befehl aus

      sudo a2enmod actions alias proxy_fcgi fcgid

Starten Sie dann Ihren Server neu

   sudo systemctl restart apache

Nehmen Sie dann die folgenden Änderungen in der Htacess-Datei vor

 <FilesMatch .php$>
   # Apache 2.4.10+ can proxy to unix socket
      SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
 </FilesMatch>

Hier ist ein Beispiel für die Ausführung von PHP 7.2, wenn PHP 5.6 aktiviert ist

  • Danke! Ich habe einen Fehler von curl bekommen “[ErrorException] Verwendung der undefinierten Konstante CURLOPT_HTTPGET – angenommen ‘CURLOPT_HTTPGET’ (dies wird einen Fehler in einer zukünftigen Version von PHP auslösen) ” Also habe ich sudo apt-get install php7.2-curl ausgeführt, um es zu beheben, und es schien zu funktionieren

    – Paul Preibisch

    12. Juni 2020 um 22:13 Uhr


Nachdem ich versucht hatte, Ihren Anweisungen zu folgen, fand ich einen möglicherweise einfacheren Weg für dasselbe Ergebnis.

Durch Hinzufügen der folgenden Zeile

ProxyPassMatch "^/php70project/.*.php(/.*)?$" "fcgi://localhost:9070/var/www/" enablereuse=on

In der Apache-Vhost-Konfiguration können Sie die PHP-Version im Verzeichnis php70project in Ihrem Vhost-Root /var/www auf Version 7 ändern, die als fastcgi ausgeführt wird.

Der folgende Ansatz für die Verwendung mit Unix-Socket

ProxyPassMatch "^/php70project/.*.php(/.*)?$" "unix:/var/run/php70fpm.sock|fcgi://localhost/var/www"

funktioniert nicht wie vorgesehen. Leider konnte ich den richtigen Code nicht finden, um dies zum Laufen zu bringen, aber da es auf dieser Seite kein Beispiel für die Verwendung von Unix-Sockets mit Unterordnern gibt https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html es könnte einfach nicht möglich sein.

  • Danke! Ich habe einen Fehler von curl bekommen “[ErrorException] Verwendung der undefinierten Konstante CURLOPT_HTTPGET – angenommen ‘CURLOPT_HTTPGET’ (dies wird einen Fehler in einer zukünftigen Version von PHP auslösen) ” Also habe ich sudo apt-get install php7.2-curl ausgeführt, um es zu beheben, und es schien zu funktionieren

    – Paul Preibisch

    12. Juni 2020 um 22:13 Uhr


1644323170 875 Ausfuhren von zwei PHP Versionen auf demselben Server
MagierPsycho

Wir haben dies im Falle von PHP auf Ubuntu + Nginx abgedeckt:
https://blog.magepsycho.com/how-to-install-multiple-versions-of-php-on-ubuntu/

So ändern Sie die CLI-PHP-Version

sudo update-alternatives --set php /usr/bin/php7.2

So ändern Sie die Web-PHP-Version

fastcgi_pass unix:/run/php/php7.2-fpm.sock

Wobei php7.2 durch die PHP-Version Ihrer Wahl ersetzt werden kann.

.

822620cookie-checkAusführen von zwei PHP-Versionen auf demselben Server

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy