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

#1
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:

Till

Administrator
#4
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
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
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.
 
Zustimmungen: Till
#7
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
 

Werbung

Top