Nginx, PHP FPM segfault und crash

Gerade musste ich eine Root Server mit Nginx, PHP und PostgreSQL aufsetzen und stiess dabei auf einige Schwierigkeiten.

Damit ich anderen die mühsame Fehlersuche ersparen kann teile ich hier meine Lösung mit.

Hier mein Server Setup

Server:                    VRoot Server
Betriebssystem:    Ubuntu LTS 14.04

Installationsanforderungen:
Nginx, PHP, PostgreSQL

Die Installation von Nginx verlief problemlos und ich habe auch den Begrüssungsbildschirm erhalten. Danach fing ich an die erforderlichen Pakete für PHP zu installieren. Auch das schien zu funktionieren und ich konnte ein einfach phpinfo Skript aufrufen, als ich dann aber das AsgardCms basierend auf Laravel hochlud und dies aufrufen wollte, bekam ich ein 502 Gateway Error. Also machte ich mich auf die Fehlersuche und durchsuchte alle Fehlerlogs.

Mit dem aufrufen von dmesg erhielt ich dann folgende Meldung:

[18710.693648] php5-fpm[14673]: segfault at 2c ip 00000000006e00ba sp 00007ffc23f14660 error 4 in php5-fpm[400000+7a5000]
[18712.179472] traps: php5-fpm[14674] general protection ip:6e00c1 sp:7ffc23f14660 error:0 in php5-fpm[400000+7a5000]

Zudem war im Kernel.log der Eintrag „php5-fpm crashed“ gelistet.

Nach studenlangem Versuchen verschiedenster Anweisungen aus verschiedensten Foren, bin ich endlich auf die für mich zutreffende Lösung gestossen: XCache und Opcache waren beide aktiviert und verursachten ein Konflikt. Ich kann mir nicht erklären weshalb beide von Beginn an aktiviert waren, da es ja eine frische Installation ist (oder ist das wirklich standardmässig so?).

Die Lösung ist also ganz einfach einer der beiden Caches zu deaktivieren. Da aus meinem Sichtpunkt Opcache klar besser und schneller ist, habe ich den XCache deaktivert. Dazu einfach unter /etc/php5/fpm/conf.d/ den Symlink 20-xcache.ini entfernen.

Falls jemand xcache bevorzugt, dann kann er einfach in der php.ini opcache deaktivieren, dazu einfach den Eintrag opcache.enable = 1 auf opcache.enable = 0 setzen.

 

Hilfreiche Artikel für Server Installationen:

Installation von Linux, Nginx, MySQL, PHP

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04

Installation von Potgres (Nginx und Gunicorn)

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn

About This Author

Post A Reply

*