php-fpm stürzt ab mit code exited bei Wechsel von PHP7 -> PHP5.6

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von ritzi1982, 9. Feb. 2016.

  1. ritzi1982

    ritzi1982 New Member

    Guten Abend zusammen,

    ich habe wie im Betreff bereits geschrieben Probleme mit abstürzendem php5-fpm wenn man im ISPConfig von PHP7 auf PHP5.6 zurückwechselt.

    Folgendes zu meiner Config:
    OS: Debian Jessie (inkl. aller Updates)
    Webserver: Apache 2.4
    PHP: 5.6 (PHP-FPM)
    Panel-Version: 3.0.5.4p8

    Ich habe laut Tutorial:
    howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10
    die PHP Version 5.5 installiert um meinen Kunden über ISPConfig diese als Alternative anbieten zu können.

    Nun habe ich zwei Kunden die gerne PHP7 einsetzen möchten.

    Ich bin daher nach folgendem Tutorial vorgegangen:
    howtoforge.com/tutorial/how-to-install-php-7-on-debian/
    um diese dann in ISPConfig einbinden zu können.

    Soweit funktioniert das Ganze.

    Wechselt nun ein Kunde / Reseller von PHP7 auf PHP5.6 zurück passiert folgendes:
    • Der PHP7-Pool des Kunden z.B. php-fpm: pool web318 läuft weiter
    • ISPConfig wechselt auf die PHP5.6
    • ISPConfig möchte reload des PHP5.6 durchführen
    • Durch den noch laufenden Pool von PHP7 (Punkt 1) scheitert dies mit folgender Fehlermeldung:
    php5-fpm.service - The PHP FastCGI Process Manager
    Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled)
    Active: failed (Result: exit-code) since Di 2016-02-09 17:46:03 CET; 10s ago
    Process: 11065 ExecReload=/bin/kill -USR2 $MAINPID (code=exited, status=0/SUCCESS)
    Process: 4936 ExecStart=/usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf (code=exited, status=78)
    Process: 4929 ExecStartPre=/usr/lib/php5/php5-fpm-checkconf (code=exited, status=0/SUCCESS)
    Main PID: 4936 (code=exited, status=78)
    Status: "Processes active: 0, idle: 60, Requests: 45, slow: 0, Traffic: 0.1req/sec"
    Feb 09 17:46:03 xxx.xxx.net systemd[1]: php5-fpm.service: main process exited, code=exited, status=78/n/a
    Feb 09 17:46:03 xxx.xxx.net systemd[1]: Unit php5-fpm.service entered failed state.

    Kann mir jemand von euch einen Tipp geben warum beim Wechsel der PHP Version der Pool vorher nicht sauber beendet wird.

    Mache ich denselben Wechsel zwischen PHP5.6 und der oben angesprochenen PHP5.5 läuft dies problemlos.

    Sollten noch Angaben fehlen bitte antworten ich werde diese natürlich nachreichen.

    Viele Grüße und schon einmal Danke für eure Mühen!
    Christian.

    PS: musste die Links etwas entschärfen da man als Neuling diese nicht posten kann ;)
     
    Zuletzt bearbeitet: 10. Feb. 2016
  2. Till

    Till Administrator

    Hast Du für php 7 auch die systemd unit angelegt?
     
  3. ritzi1982

    ritzi1982 New Member

    ja habe ich angelegt so wie es im tutorial steht
     
  4. Till

    Till Administrator

    Es gibt einen Bug in php-fpm und vermutlich schlägt der hier zu, und zwar ist es so dass php-fpm manchmal reloads ignoriert. ISPConfig entfernt also den pool für php7, und reloaded php-fpm, php-fpm kümmert sich aber nicht drum und der pool bleibt weiter aktiv und dann schlägt natürlich der start des neuen php5 pools fehl.

    Du könntest z.B. mal versuchen das:

    ExecReload=/bin/kill -USR2 $MAINPID

    im systemd script durch

    ExecReload=/bin/kill -QUIT $MAINPID

    zu erstezen.
     
  5. ritzi1982

    ritzi1982 New Member

    Hallo Till,

    danke für die rasche Antwort. Hatte leider jetzt erst Zeit das zu testen.
    Es hat leider keine Änderung gebracht, das Verhalten ist noch genau gleich.

    Was ich bei meinen Angaben von gestern noch vergessen hatte dass das System vor einiger Zeit von Wheezy auf Jessie hochgezogen wurde.

    Viele Grüße
    Christian.
     
  6. ritzi1982

    ritzi1982 New Member

    Hallo Till,

    Du hast mich mit dem systemd unit Script auf die richtig Spur gebracht!

    Ich hatte als Gewohnheit nach Abschluss der PHP Installation den FPM über "/etc/init.d/php-7.0.3-fpm start" gestartet -> sobald das unit script den reload machen wollte kam im syslog der Fehler "unit php-7.0.3-fpm.service cannot be reloaded because it is inactive".
    Ist ja auch klar, da ich nicht über unit gestartet habe ;)

    Der Pool des Users konnte somit nicht beendet werden.
    Als Folge konnte der Reload des PHP 5 nicht gemacht werden, da der PHP 7 Pool ja noch da war.

    Nach Start des FPM über "systemctl start php-7.0.3-fpm.service" läuft jetzt alles wie es soll.

    Danke für den Tipp und ich hoffe wenn jemand den Fehler auch hat, dass ihm der Artikel hier hilft ;)

    Viele Grüße
    Christian.
     
    Till gefällt das.
  7. rutziste

    rutziste New Member

    Hallo hätte auch eine Frage
    mein Server:
    OS: Debian Jessie (inkl. aller Updates)
    Webserver: Apache 2.4
    PHP: 5.6 (PHP-FPM) und PHP 7.0.4 laut Tutorial
    Panel-Version: 3.0.5.4p9

    Wenn ich bei einem Kunden auf PHP 7 - FPM umschalte funktioniert das bestens. Erst wenn ich auf Version PHP 5.6 - FPM zurückschalte kann er keine php Datein richtig lesen. Stell ich den schalter auf PHP 5.6 - Fast - CGI funktioniert das wieder, nur mit FPM gibt es Fehler.
    Hab das wie oben beschrieben schon ausprobiert und bleibt auch ohne Wirkung. Bei anderen Kunden wo ich vorher nicht auf php7 umgestellt habe funktioniert php5.6 - FPM.
    Weiß momentan nicht wo ich noch suchen soll bzw. was ich falsch mache.
    Vielleicht hat jemand eine Idee

    LG und danke
     

Diese Seite empfehlen