Mehrere PHP-Versionen auf einem Linux-Server (mit PHP-FPM)

Bislang dachte ich immer mehrere PHP-Versionen auf einem Server nebeneinander laufen zu lassen ist nicht so einfach… da hab ich mich wohl getäuscht!

Grundsätzlich läuft PHP meistens als Apache-Modul. Das heißt der Apache hat direkt eine Shared-Lib (.so) in seinem Speicher geladen mit der er PHP-Programmcode ausführen kann. Der Vorteil dieser Lösung liegt auf der Hand: Sie ist schnell. Der Nachteil ist leider auch klar: Jeglicher PHP-Programmcode wird mit den Rechten des Users ausgeführt, der Apache gestartet hat (bei Ubuntu: www-data). Außerdem kann es immer nur EINE PHP-Version geben.

Die Lösung um diese Probleme nennt sich PHP-FPM. PHP-FPM ist dabei quasi genausoschnell wie das Apache-Modul.
Wie’s funktioniert? Ganz einfach: Es stehen immer ein paar PHP-Prozesse rum (die nun auch unter dem Wunschuser laufen können) die gerade nichts tun. Wenn der Apache PHP-Programmcode bekommt kippt er diesen einfach in den entsprechenden Socket und einer der Prozesse führt ihn aus.

Hier also die Anleitung wie man sowas in einem Ubuntu 16.04 Xenial Xerus hinbekommt:

Erstmal installieren wir php7.0 und php5.6. Das kriegen wir auf dem Repository Ondřej Surý:

add-apt-repository ppa:ondrej/php
apt-get update
apt-get install libapache2-mod-fastcgi php5.6-fpm php5.6 php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml php7.0-fpm libapache2-mod-fastcgi php7.0-fpm php7.0 php7.0-mcrypt php7.0-mbstring php7.0-mysql php7.0-zip php7.0-gd php7.0-xml

Wenn nun alles geklappt hat sollten beide FastProcess-Manager laufen:

systemctl status php5.6-fpm
systemctl status php7.0-fpm

Die Logdateien finden sich hier:

/var/log/php5.6-fpm.log
/var/log/php7.0-fpm.log

Die globalen Konfigurationsdateien hier:

/etc/php/5.6/fpm/php-fpm.conf
/etc/php/7.0/fpm/php-fpm.conf

Die Konfigurationsdateien für die einzelen Sites (pools) hier:

/etc/php/5.6/fpm/pool.d/www.conf
/etc/php/7.0/fpm/pool.d/www.conf

Wir verstellen an dem Default-Pool (www) nichts und aktivieren ihn, also folgende Befehle ausführen:

a2enmod actions 
a2enmod fastcgi

Und nun folgendes in die Datei ‚/etc/apache2/sites-enabled/000-default.conf‘ ganz oben schreiben (Beispielhaft für irgendeine Config von irgendeiner Apache-Webseite):

<IfModule mod_fastcgi.c>
  AddHandler php56-fcgi-www .php
  Action php56-fcgi-www /php56-fcgi-www
  Alias /php56-fcgi-www /usr/lib/cgi-bin/php56-fcgi-www
  FastCgiExternalServer /usr/lib/cgi-bin/php56-fcgi-www -socket /run/php/php5.6-fpm.sock -pass-header Authorization

  <Directory "/usr/lib/cgi-bin">
     Require all granted
  </Directory>
</IfModule>

<IfModule mod_fastcgi.c>
   AddHandler php70-fcgi-www .php
   Action php70-fcgi-www /php70-fcgi-www
   Alias /php70-fcgi-www /usr/lib/cgi-bin/php70-fcgi-www
   FastCgiExternalServer /usr/lib/cgi-bin/php70-fcgi-www -socket /run/php/php7.0-fpm.sock -pass-header Authorization

   <Directory "/usr/lib/cgi-bin">
      Require all granted
   </Directory>
</IfModule>

<IfModule mod_fastcgi.c>
   <FilesMatch ".+\.ph(p[345]?|t|tml)$">
      SetHandler php70-fcgi-www
   </FilesMatch>
</IfModule>

Apachen neustarten:

systemctl restart apache2

Und je nachdem ob ihr in der Datei nun das hier:

SetHandler php70-fcgi-www

oder das hier:

SetHandler php56-fcgi-www

stehen habt wird eure Seite mit PHP7 oder PHP5.6 ausgeführt.

In der Konfig-Datei für die Pools könnt ihr nun noch konfigurieren unter welchem User der PHP-Prozess ausgeführt wird, wieviele PHP-Prozesse vorgehalten werden, ob ihr ein Logfile über langsame PHP-Script mitführen wollt (slowlog) und ihr könnt alle Parameter aus der php.ini übersteuern (php_admin_value, php_flag, php_admin_flag).

Alles deutlich einfacher als ich gedacht habe!

PS: Die laufenden PHP Prozesse könnt ihr mitsamt ihrem Pool-Namen im Output von ‚ps‘ gut sehen:

4 S root      php-fpm: master process (/etc/php/5.6/fpm/php-fpm.conf)
5 S www-data  php-fpm: pool www
5 S www-data  php-fpm: pool www
4 S root      php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
5 S www-data  php-fpm: pool www
5 S www-data  php-fpm: pool www

UPDATE: Unter Ubuntu 18.04 gibt es libapache2-mod-fastcgi nicht mehr. Alternativ (und einfacher) kann man proxy_fcgi nehmen!

Kurzanleitung:

domain1.de -> PHP 5
domain2.de -> PHP 7
add-apt-repository ppa:ondrej/php
apt-get install apache2 php5.6-fpm php5.6 php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml php7.2-fpm php7.2-fpm php7.2 php7.2-mbstring php7.2-mysql php7.2-zip php7.2-gd php7.2-xml
a2enmod proxy_fcgi
systemctl restart apache2

Nun in die Datei ‚/etc/apache2/sites-enabled/000-default.conf‘ folgendes eintragen:

<VirtualHost *:80>
ServerName www.domain1.de
ServerAlias domain1.de
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/domain1
ErrorLog ${APACHE_LOG_DIR}/error_domain1.log
CustomLog ${APACHE_LOG_DIR}/access_domain1.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php5.6-fpm.sock|fcgi://localhost/var/www/html/domain1
</VirtualHost>

<VirtualHost *:80>
ServerName www.domain2.de
ServerAlias domain2.de
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/domain2
ErrorLog ${APACHE_LOG_DIR}/error_domain2.log
CustomLog ${APACHE_LOG_DIR}/access_domain2.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.2-fpm.sock|fcgi://localhost/var/www/html/domain2
</VirtualHost>

Apachen neustarten (’systemctl restart apache2′) und die Datei ‚/var/www/html/domain1/info.php‘ und ‚/var/www/html/domain2/info.php‘ mit folgendem Inhalt erstellen:

<?php
phpinfo();
?>

Aufruf nun:
http://www.domain1.de/info.php
http://www.domain2.de/info.php

Das eine ist PHP 5.6, das andere PHP 7.2. So wie es sein soll!


Beitrag veröffentlicht

in

, ,

von

Schlagwörter:

Kommentare

53 Antworten zu „Mehrere PHP-Versionen auf einem Linux-Server (mit PHP-FPM)“

  1. Horst

    Danke für die knappe aber vollständige Anleitung.

    Die Installation und Konfiguration funktioniert bei mir auch auf Ubuntu 14.04 genau so und läuft seit heute problemlos.

    1. Thomas

      Ich hatte nicht dran gezweifelt dass das laufen würde 😉
      Freut mich!

      Thomas

  2. Stefan

    Hallo,
    ist es möglich auch noch zussätzlich eine zweite PHP 5 Version laufen zu lassen. Für eine Migration benötige ich PHP 5.3 und PHP 5.6.

    Grüße
    Stefan

    1. Thomas

      Hallo Stefan,

      prinzipiell ist das Problemlos möglich. ABER bei PHP 5.3 sieht es echt dunkel aus.
      PHP 5.3 ist ja schon seit zwei Jahren EOL.
      An deiner Stelle würde ich meine PHP 5.3 Codes nehmen, auf einer PHP 5.6 einspielen und dann Stück für Stück die nicht kompatiblen Teile umbauen.

      Spricht da was dagegen?

      Thomas

      1. Stefan

        Hallo Thomas,

        es geht um einen alten WebShop der noch unter PHP 5.3 läuft. Der soll migriert werden auf eine neue Version und dann PHP 5.6. Damit der Shop bei der Übernahme ohne Fehler läuft, benötige ich zwischenzeitlich begrenzt PHP 5.3. Anschließend kann der die Version dann wieder gelöscht deinstalliert werden.

        Danke und Grüße
        Stefan

        1. Thomas

          Hallo Stefan,

          ich denke PHP 5.3 und 5.6 ist nicht sooo weit auseinander. Hast du schonmal probiert den Shop direkt auf PHP 5.6 laufen zu lassen?

          Wenn du unbedingt PHP 5.3 willst müsstest du es wahrscheinlich von Hand kompilieren, ich finde es auf Anhieb nicht in irgendwelchen Paketquellen.

          Thomas

          1. Stefan

            Hi Thomas,
            da hast du sicher recht. Da aber ein Dienstleister für uns das Shopupgrade macht, will eine 100%ig laufende Kopie des Shops haben. So fängt nachher das Theater an wegen der vielen selbstgebauten Modulen, die dann vielleicht nicht mehr fehlerfrei laufen.
            Grüße Stefan

            1. Thomas

              Also wie ich auch suche, ein PPA für PHP5.3 scheint es nicht mehr zu geben, und wenn dann nur für veraltete Versionen. Runterladen und selbst compilieren scheint mir der einzig gangbare Weg zu sein wenn es unbedingt PHP 5.3 sein muss.
              Du solltest halt aufpassen auch alle Module die auf der alten Maschine existieren wieder mit zu compilieren 🙂

        2. Hallo Stefan,
          möglicherweise ist diese Antwort schon zu spät. 😉 Aber vielleicht hilft es anderen, die vor einer ähnlichen Aufgabe stehen.

          Grundsätzliche Vorgehensweise:
          Im Netz nach den entsprechenden Changelogs suchen, hier im Beispiel wäre http://php.net/ChangeLog-5.php die richtige Anlaufstelle.
          Suche alle Funktionen die sich im Verhalten geändert haben oder weggefallen sind. Dann suche per „find & grep“ in deinem Code nach den Funktionen und ändere den Code entsprechend.

  3. Hendrik

    Das ist bis jetzt die einzige Anleitung, bei der es bei mir auf Anhieb funktioniert hat. Vielen Dank.

    Eingerichtet habe ich es unter Ubuntu 16.04

    1. Thomas

      Freut mich wenn ich helfen konnte!

      Thomas

  4. Hermann Gottschalk

    Hi,

    Muss man zwingend beide Versionen als fastcgi installieren, oder kann man php7 als apachemodule Laden und php5 als fastcgi?

    Gruß
    Hermann

    1. Thomas

      Hallo Hermann,

      selbstverständlich geht es auf eine PHP-Version als MOD-Apache laufen zu lassen und den Rest per FastCGI!

      Thomas

      1. Hermann Gottschalk

        Ja. Hab’s schon so konfiguriert. Vielen Dank für das Tutorial…

        Grüße
        Hermann

  5. Christoph

    Danke fürs Zusammenfassen der Schritte! Bei der Installation von libapache2-mod-fastcgi bekomme ich auf 14.04 LTS allerdings immer einen Fehler:
    dpkg: error processing package libapache2-mod-fastcgi (–configure):
    subprocess installed post-installation script returned error exit status 1
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Eine Idee in welche Richtung ich suchen sollte? Danke….

    1. Thomas

      Hallo Christoph,

      klingt für mich so als würde beim Configure des Packetes was schief laufen. Guck doch mal in die ‚/var/log/dpkg.log‘. Da steht hoffentlich was genau schief gelaufen ist…

      Thomas

  6. Simon Schäberle

    Hallo Thomas,

    kurze Frage, bin mit Apache2 und den Moduldefinitionen noch nicht so vertraut. Wenn ich Virtuelle Host erstelle, dann muss ich die Angaben

    SetHandler php70-fcgi-www

    Innerhalb des Blocks machen, um nur die PHP-Bearbeitung für diesen Virtuellen Host zu ändern?

    Gruß
    Simon

  7. Thomas

    Hallo Simon,

    so ist es!
    Wenn es nicht gehen sollte kannst mir gerne ein detailiertes Beispiel schicken und ich probier es auf einem Testserver aus!

    Thomas

  8. Bernd Schneider

    Hallo Thomas,

    auch von mir vielen Dank für die einfache Anleitung.

    Leider ist mein Verständnis nicht ausreichend um beide Versionen zu konfigurieren. Ich wollte bei mir zwei Ordner für die verschiedenen PHP Versionen anlegen: /var/www/html/php56 und /var/www/html/php70. Je nachdem welchen Ordner ich aufrufe, soll dementsprechend die gewünschte PHP-Version ausgeführt werden.

    Jetzt habe ich dafür wie Du beschrieben hast am Anfang der 000-default.conf den genanten Code vorab eingefügt und dann im VirtualHost folgende Zeilen ergänzt:

    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    SetHandler php56-fcgi-www

    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    SetHandler php70-fcgi-www

    Leider bekomme ich über phpinfo() in beiden Ordner immer die PHP 7.0 angezeigt. Was mache ich falsch?

    Liebe Grüße
    Bernd

  9. Bernd Schneider

    Meine DIRECTORY Tags wurden im vorigen Post entfernt.
    Jeweils einer mit der Pfadangabe steht um jeden Block.

  10. Thomas

    Hallo Bernd,

    für mich hört sich das schon alles richtig an.
    Hast du mal im phpinfo() gecheckt ob du evtl. doch Mod-PHP aktiv hast?
    Wenn du ‚apache2ctl -M‘ eingibst sollte ‚php7_module (shared)‘ nicht auftauchen.

    Thomas

  11. Bernd Riedel

    Irgendwie klappt das nicht. Wenn ich das in die default-config reinschreibe, funktioniert es in diesem vhost. Was mache ich aber für weitere vhost-configs? Wo setze ich den Sethandler rein?

  12. Phatair

    Hallo, vielen Dank für die tolle Anleitung. Ich stehe auch vor dem Problem, dass ich auf meinem Ubuntu 16.04 php7 und php5.6 laufen lassen muss.

    Ich müsste aber beides im Apache Modul laufen lassen. Ist das möglich und wie müsste dann die config des virtualhosts aussehen?
    Wenn das nicht geht, wie müsste es ausshen wenn ich php7 in apache module laufen lasse und php5.6 in fast-cgi?

    Für Hilfe wäre ich sehr dankbar. Gruß und einen schönen Sonntag.

    1. Thomas

      Hallo Phatair,

      beides als Modul laufen lassen geht nicht. Ich würde php7 ganz normal als Modul einrichten und dann nachträglich den PHP 5.6 Fastcgi installieren.

      Je nachdem ob du dann
      SetHandler php70-fcgi-www
      oder
      SetHandler application/x-httpd-php

      in der config stehen hast wird entweder das Modul genutzt oder der FastCGI Handler.

      Thomas

  13. Anonymous

    Hallo
    Das ist eine Klasse anleitung

    Wollte mal auf diesen Wege frage ob es auch möglich ist diese beiden php version um weitere zu erweitern als noch welche nach zu installieren

    1. Thomas

      Natürlich kann man soviele PHP Versionen wie man will parallel laufen lassen, diese müssen eben nur in extra Pfaden sein und per FPM erreichbar sein. Diese könnten sogar auf einem anderen Server liegen…

      Thomas

  14. Anonymous

    Failed to get D-Bus connection: Unbekannter Fehler -1

    ich bekomme das wenn ich

    systemctl status php5.6-fpm

    eingebe auch bei php7.0

    kann einer helfen

  15. alea

    Hallo,

    klasse Anleitung!

    Kann man nachträglich php 5 installieren, wenn php7 bereits installiert ist und läuft?

    Debian 8, Apache 2.4, PHP Version 7.0.27-1, phpMyAdmin 4.7.7, Froxlor

    1. Thomas

      Hallo alea,

      ja, das kann man natürlich. Es kann auch Mod-PHP und PHP per Fastcgi gleichzeitig laufen.

      Ich würde dir aber dringenst raten vorher einen Snapshot zu machen (wenns ne virtuelle Maschine ist), oder das ganze auf einem Spielsystem zu testen.

      Wenn die wichtige Website nicht mehr geht kann man nämlich ganz schön ins schwitzen kommen…

      Wenn du Hilfe dabei brauchst kannst mich auch gerne anschreiben!

  16. Markus

    Das sollte doch auch mit .htaccess Dateien gehen?

    Also von wegen
    SetHandler php70-fcgi-www
    SetHandler php71-fcgi-www
    SetHandler php72-fcgi-www
    ..etc pp

    Normalerweise nutzen wir für Kundenserver ISPconfig, in manchen Fällen wird aber auch „nackt“ installiert, und der Kunde möchte dann im nachhinein doch selber – aber halt nur in seinem Bereich – rumfummeln..

    Da wäre die Lösung natürlich sinnvoll.

  17. Dirk

    Merkwürdiges Verhalten:

    systemctl status apache2.service
    ● apache2.service – LSB: Apache2 web server
    Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
    Drop-In: /lib/systemd/system/apache2.service.d
    └─apache2-systemd.conf
    Active: failed (Result: exit-code) since Mi 2018-02-07 14:36:51 CET; 22s ago
    Docs: man:systemd-sysv-generator(8)
    Process: 5939 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
    Process: 3946 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
    Process: 5965 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)

    Feb 07 14:36:51 ubuntu apache2[5965]: Output of config test was:
    Feb 07 14:36:51 ubuntu apache2[5965]: [Wed Feb 07 14:36:51.334910 2018] [alias:warn] [pid 5979] AH00671: The Alias directive in /etc/ap
    Feb 07 14:36:51 ubuntu apache2[5965]: AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/so-geht-es.conf:
    Feb 07 14:36:51 ubuntu apache2[5965]: FastCgiExternalServer: redefinition of previously defined class „/usr/lib/cgi-bin/php56-fcgi-www“
    Feb 07 14:36:51 ubuntu apache2[5965]: Action ‚configtest‘ failed.
    Feb 07 14:36:51 ubuntu apache2[5965]: The Apache error log may have more information.
    Feb 07 14:36:51 ubuntu systemd[1]: apache2.service: Control process exited, code=exited status=1
    Feb 07 14:36:51 ubuntu systemd[1]: Failed to start LSB: Apache2 web server.
    Feb 07 14:36:51 ubuntu systemd[1]: apache2.service: Unit entered failed state.
    Feb 07 14:36:51 ubuntu systemd[1]: apache2.service: Failed with result ‚exit-code‘.

    Ich stehe „auf dem Schlauch“. Bei einem anderen virtuellen host klappte es.

    DL

    1. Thomas

      Hallo Dirk,

      du hast in deinen Apache-Config Files irgendwo „AddHandler php56-fcgi-www“ schonmal eingetragen. Deswegen meckert er beim Apachen Start über eine Redeklaration davon.

      Kannst du mal prüfen ob du das irgendwo doppelt findest?

      Thomas

      PS: Sorry für die verspätete Antwort, bin gerade im Urlaub!

  18. Danke Thomas für die Rückmeldung, ich werde mir das am Wochenende in Ruhe anschauen und dann entsprechend wieder Rückmeldung geben.

  19. Wenn ich die /etc/PHP/7.0/apache2/PHP.ini ändere, dann wirken sich die Änderungen nicht auf die tatsächlichen PHP-Einstellungen für einen virtuellen host aus, welcher PHP70 als Handler verwendet. Das sehe ich bei der Kontrolle mit info.php. Wo müsste ich eigentlich entsprechend ändern?

  20. Thomas

    Hallo Dirk,

    in der info.php sollte auch „Loaded Configuration File“ stehen. Bei mir ist das: /etc/php/7.0/fpm/php.ini

    Wenn ich dort etwas ändere und mit:
    systemctl restart php7.0-fpm
    den php70 FPM Dienst neu starte läuft alles sauber und ist auch aktualisiert.

    Die Config-Datei im Pfad „apache2“ kann es ja quasi garnicht sein denn FPM ist ja unabhängig vom Apachen!

  21. MonTea

    Mir hat das leider das „gesammte System“ zerschossen.
    Es ging gar nichts mehr.. weder meine typo3-Installation noch die php5.6 Joomla-Installation.

    Habe mühsam wieder deinstalliert und dabei auch Dinge wie phpmyadmin deinstalliert, zum Glück war da nicht die Datenbank mit dabei.

  22. Sehr feine Anleitung. Funktioniert bestens.

  23. Wie bzw. wo bekomme ich den nun beispielsweise den Parameter memory_limit geändert und beispielsweise den Parameter upload_max_filesize?

    1. Thomas

      In den folgenden Dateien:
      /etc/php/5.6/fpm/php-fpm.conf
      /etc/php/7.0/fpm/php-fpm.conf

  24. Anonymous

    Wie kann man die PHP-Version per htaccerss ändern ?? dass würde mich auchnoch sehr reizen.

    LG

    1. Thomas

      Hallo Anonymous,

      simpel eine .htaccess anlegen mit dem Inhalt:
      SetHandler php56-fcgi-www
      oder
      SetHandler php70-fcgi-www

      Natürlich davor drauf achten dass in der ‚/etc/apache2/apache2.conf‘ AllowOverride auf All steht für /var/www!

      Thomas

  25. heo

    Hallo Thomas,
    vielen Dank für die Anleitung, ich hab versucht es nachzubauen, jedoch ohne Erfolg.
    Ubuntu Server 18.04
    Ziel: php7.2 als Modul => läuft
    Ziel: php5.6 als fcgi in nur einem bestimmten Verzeichnis => läuft nicht

    *) Ich hab in der Installationsanleitung oben nur den Teil mit php5.6 genommen und ohne Probleme installiert
    *) a2endmod hat ebenfalls geklappt
    *) Ich sehe den Dienst von php5.6 up and running
    *) apache2-config-Datei wurde nur um den Teil mit php5.6 ergänzt

    *) Kein Fehler bei Apache2 restart oder php5.6-fcgi restart

    Ich hab in der apache2.conf einen Directory-Teil drinnen wo ich bei diesem Verzeichnis ua. auch
    SetHandler php56-fcgi-www
    eingetragen habe.
    Nachdem das nicht funktioniert hat habe ich es mit einer .htaccess-Datei versucht
    Das Ergebnis war jedes mal das gleiche: phpinfo zeigt PHP7.2

    Was bei mir allerdings anders ist, das ich libapache2-mod-fastcgi nicht installieren konnte.
    Lt. Recherche wird das modul durch mod_fcgid ersetzt, welches auch via phpinfo geladen wird.
    Einfach mod_fastcgi durch mod_fcgi ersetzten klappt jedoch nicht (mod_fcgi.c => FastCgiExternalServer Error)
    Hast Du eine Idee wie ich es mit mod_fcgi hinbekomme?
    Vielen Dank!
    LG, heo

  26. heo

    Hallo Thomas,
    doch etwas zu schnell geschrieben….

    Mit der Anleitung von dieser Seite hier => https://tecadmin.net/install-multiple-php-version-apache-ubuntu
    hat’s geklappt, man muss proxy_fcgi verwenden um ans Ziel zu kommen.
    LG, heo

  27. Hi

    Ich möchte php 7.0 fpm und php 7.2 fpm nutzen. Das auf einem Ubuntu 18.04. Ziel ist es, WordPress in einem eigenen vHost und Shopware in einem eigenen vHost laufen zu lassen.

    Habe jetzt schon entsprechend herumprobiert und auch gegooglet,mit teils redunanten oder nicht eindeutigen Aussagen als Anworten.

    Wäre es möglich diesen Guide/Tutorial dementsprechend anzupassen oder oder eine vHost Config bereitstellen, wie die für Shopware vHost aussehen müsste, das ja aufgrund der ioncube loader thematik und den Verschlüsselungen der Themes/Plugins nur unter php 7.0 einwandfrei funktioniert.

    Als relativer Beginner, der eh schon weit gekommen ist, hoffe und freue ich mich über jede Hilfe.

    LG
    Gernot

  28. Thomas

    Hallo Gernot,

    das einzige was du machen musst, ist in der jeweiligen php.ini den Ioncube Loader (den du vorher runtergeladen hast) mit einzufügen.

    Runterladen hier: http://www.ioncube.com/loaders.php
    Entpacken und die entsprechende ioncube_loader_lin_7.X.so ins lib-Verzeichnis von php schieben.

    Dann in der php.ini eintragen:
    zend_extension = „/usr/lib/php/20131226/ioncube_loader_lin_7.X.so“

    Hilft dir das?

    Thomas

  29. Sehr geil. Funktioniert super. Allerdings konnte ich mit der
    000-default.conf nur jeweils die eine oder die andere PHP-Version starten, obwohl der Status von php5.6-fpm, bzw. php7.2-fpm running war. Ich habe mir beholfen, indem ich die eine Seite, die unbedingt PHP 5.6 braucht, eine 001-default.conf erstellt mit einem eigenen Port (8087). Die wird jetzt olleseite:8087/intranet aufgerufen und funzt. Alle anderen Seiten zu diesem Thema sind irgendwie Müll. You made my day.

  30. Hallo Thomas,
    im 000-default vHost läuft PHP. hier kann ich auch mit der Veränderung des SetHandler die PHP Version bestimmen.

    in allen weiteren vHost (8 Stück) wird PHP nicht ausgeführt. Egal wie ich das einbinde. Es ist als wenn die Settings auf den 000-default nicht vererbt werden.
    Hast du einen Tip für mich?
    System: ubuntu 14.04.05, apache 2.4.7, php-fpm aus den ondrej-repos.

    danke für Feedback
    Stephan

  31. Thomas

    Hallo Stephan,

    ich glaub ich hab mich da mal damit rumgequält und das Problem war dass man nur maximal einmal „SetHandler“ machen darf. Das SetHandler nochmal überschreiben geht imho nicht.

    Hilft dir das weiter?

    Thomas

    1. Stephan

      Hi Thomas,
      hmmm. maximal einen SetHandler…
      Ich verstehe deine Anleitung so, das man die beiden Handler setzt (AddHandler in der 000-default.conf) und dann in den vHost configs mit SetHandler nutzen/aufrufen kann (respective in den .htaccess Dateien die im entsprechenden vHost Verzeichnis. innerhalb eines vHost hast du sicherlisch recht, aber übe vHost Grenzen hinweg?
      erst wenn ich mit mod_php arbeite, dann bekommen die anderen vHosts PHP… mit fastcgi/fcgid leider nicht und ich finde immer noch nicht raus warum…*kopfkratz*.

      Grüsse
      Stephan

      1. Thomas

        Hallo Stefan,

        nachdem ich das ganze nochmal sauber für dich aufsetzen wolle habe ich festgestellt dass das Modul libapache2-mod-fastcgi gar nicht mehr in den Paketquellen für Ubuntu 18.04 existiert.
        Ich habe oben im Beitrag mal Alternativ das ganze mit dem Modul proxy_fcgi erklärt, damit geht es imho deutlich einfacher. Hilft dir das?

        Thomas

  32. Hallo,

    nachdem ich anstelle PHP 7.1.x hier PHP 7.4.3 aktiviere mit:

    root@ubuntu:/home/dirk# php -v

    PHP 7.4.3 (cli) (built: Feb 20 2020 13:13:53) ( NTS )

    Copyright (c) The PHP Group

    Zend Engine v3.4.0, Copyright (c) Zend Technologies

    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

    root@ubuntu:/home/dirk# sudo a2enmod php7.4

    Considering dependency mpm_prefork for php7.4:

    Considering conflict mpm_event for mpm_prefork:

    Considering conflict mpm_worker for mpm_prefork:

    Module mpm_prefork already enabled

    Considering conflict php5 for php7.4:

    Module php7.4 already enabled

    root@ubuntu:/home/dirk#

    erhalte ich auf der Startseite vom Joomla 3.9.15 folgende Fehlermeldung mit erweitertem Fehler-Protokoll:

    Warning: session_start(): Failed to read session data: user (path: /var/lib/php/sessions) in /var/www/so-geht-es/libraries/joomla/session/handler/native.php on line 260

    Error: Failed to start application: Failed to start the session

    Wie kann ich das beheben?! Wenn ich PHP 7.1.x wieder einschalte und PHP 7.4.3. ausschalte, dann läuft Joomla wieder.

    Ggf. Dank

    DL

    1. Thomas

      Hi Dirk,

      klingt für mich simpel so als hätte das aktivierte PHP nicht die nötigen Rechte um nach /var/lib/php/sessions schreiben zu dürfen. Entweder von diesem Pfad die Rechte anpassen oder in der Config der PHP Installation den Sessionpfad ändern.

      Lg,

      Thomas

  33. Peter

    Hallo,
    ich habe meinen Server jetzt mit PHP 7.4.6 neu aufgesetzt.

    Ich benötige noch die PHP Version 5.6.

    Kann ich dann die Version 5.6, wie ganz unten für Ubuntu 18.04 installieren ? Installiert habe ich sogar die Verson 20.04.

    Ich nutze auf meinem Server eine „Hauptdomain“, die MUSS auch weiterhin mit der 7.4.6 laufen.

    Weiterhin möchte ich noch 2-3 andere Domains verwenden, die die Version 5.6 nutzen.

    Muss ich die dann in der 000-default.conf konfigurieren oder in der jeweiligen .conf der Seiten ?

    mfg
    Peter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert