Ich habe ein Upgrade auf Ubuntu Server 14.04 durchgeführt, in der Erwartung, dass die Standard-Apache-Installation das neue Ereignis-MPM verwenden würde, aber stattdessen finde ich den alten speicherfressenden Prefork.
Ich habe Event MPM erfolgreich in Arch Linux eingerichtet, aber ich kann dies unter Ubuntu nicht tun. Ich bekomme immer:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
Ich habe Apache2 bereits installiert php-fpm
und konfiguriert, um es zu verwenden, aber da die Konfigurationsdateien für Apache2 unter Ubuntu unterschiedlich sind, bin ich mir nicht ganz sicher, ob ich es am richtigen Ort mache.
Irgendeine Idee, wie man PHP-Thread sicher macht, damit ich apache2 event-mpm verwenden kann? (natürlich ohne PHP manuell neu kompilieren zu müssen)
sudo service apache2 restart
Das hat bei mir funktioniert.
Überprüfen Sie zuerst, ob Sie dieses Paket installiert haben:
Wenn Sie es haben, entfernen Sie es einfach:
quelle
Sie können mehrere Möglichkeiten für Apache installieren, um parallel mit PHP zu kommunizieren. Vielleicht hast du (noch) das alte mod_php installiert, zusätzlich zu fastcgi / php-fpm.
Sie können sehen, mit welchen Modulen Ihr Apache zur Laufzeit geladen hat
Verwenden Sie bei Bedarf,
sudo
um Root-Berechtigungen abzurufen. Wenn Siephp5_module (shared)
unter den Modulen sehen, die Ihr Apache gerade verwendet, ist das alte mod_php immer noch installiert und blockiert die Verwendung vonmpm_worker
odermpm_event
.quelle
sudo a2dismod
das Tabulatorzeichen zweimal zu drücken, um eine Liste der Mods anzuzeigen, die deaktiviert werden können. Wenn du esphp5
verderblich siehst .Für mich ist folgende Arbeit vollständig auf Debian:
a2dismod mpm_prefork && a2enmod mpm_event
aptitude remove libapache2-mod-php5
php_
Option in Ihrem VHost durch kapseln<IfModule mod_php5.c></IfModule>
, sonst wird Apache nicht neu gestartetservice apache2 restart
quelle
Suchen Sie in den Abschnitten zum Laden von Modulen in Ihrer Apache-Konfigurationsdatei nach den folgenden Informationen:
Und ersetzen Sie es durch das folgende Modul:
quelle
a2dismod mpm_prefork && a2enmod mpm_event
. Starten Sie dann Ihren Apache neu und Sie sind fertig.das php5-modul benötigt die prefork mpm, und um prefork zu deaktivieren, muss man php5 deaktivieren.
unter debian habe ich als root folgendes gemacht:
Deaktivieren Sie die Prefork-MPM
Aktivieren Sie das Ereignis mpm, oder was auch immer Sie bevorzugen. ich habe festgestellt, dass event mpm für apache 2.2 oder früher nicht empfohlen wurde
zum deaktivieren des php5 moduls laden, aber ohne deinstallation.
um die allgemeine Korrektheit der resultierenden Apache-Konfiguration zu testen. Fehler müssten gemäß der Antwort von @sulther oben bewältigt werden .
starte Apache neu
falls php noch benötigt wird, sollte eine threadsafe version installiert werden. Siehe: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0
Viel Glück
quelle