Fehler beim Starten von Apache "PHP-Wert"

12

Nach dem Update meines VPS erhalte ich die folgende Fehlermeldung:

Fehler beim Starten von Apache: Starten von httpd: Syntaxfehler in Zeile 31 von /etc/httpd/conf.d/php.conf: Ungültiger Befehl 'php_value', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht in der Serverkonfiguration enthalten ist [FAILED]

Aktivieren Sie Module auf PHP:

[PHP Modules] bz2 calendar Kern ctype curl date dom ereg exif fileinfo filter ftp gd gettext gmp hash iconv imap intl ionCube Loader wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Zend Modules] der ionCube PHP Loader

Zeile relativ zum Fehler:

php_value session.save_handler "files"

Was bedeutet der Fehler und wie kann ich ihn beheben?

David E.
quelle

Antworten:

12

Genau auf dieses Problem bin ich kürzlich mit Plesk 9.5 unter CentOS gestoßen.

Ich kann nicht sicher sagen, ob es durch ein Update auf Plesk verursacht wurde oder nicht. Der Kunde glaubt nicht, dass in letzter Zeit Änderungen vorgenommen wurden, aber Apache konnte mit diesem Fehler nicht starten.

Nach einer Analyse des Systems, um sicherzustellen, dass es nicht auf einen Verstoß zurückzuführen ist, habe ich einige Fehlerbehebungsmaßnahmen durchgeführt und festgestellt, dass mod_phpes aus der Apache-Konfiguration entfernt wurde. Nach der Überprüfung der Plesk-Einstellungen verwendete jeder vhost auf der Box FastCGI und SuExec.

Bei Verwendung von FastCGI und SuExec können Sie die PHP-Anweisungen in php.conf (FastCGI) und .htaccess (SuExec) nicht ändern.

Der Kunde hatte die beleidigenden Zeilen ursprünglich auskommentiert, aber dadurch wurde die Sitzungsunterstützung für alles unterbrochen. Die einzige Möglichkeit, dies zu beheben, war das manuelle Hinzufügen von mod_php zurück zu httpd.conf.

Fügen Sie dem Abschnitt mit den anderen LoadModule die folgende Zeile hinzu. Stellen Sie sicher, dass der Pfad (../modules/) mit den übrigen Modulen dort übereinstimmt. Die Chancen stehen gut, dass es bereits auf Ihrem System vorhanden ist und während des Updates einfach aus der Konfiguration entfernt wurde.

bash# vi /etc/httpd/conf/httpd.conf
LoadModule php5_module ../modules/libphp5.so

bash# apachectl restart

Dies hat mich unvorbereitet überrascht, und ich kann nicht sicher sagen, ob es das Upgrade ist, das das Problem verursacht hat, oder ob dies die beste Lösung ist. Ich bin offen für Kommentare, rate jedoch dringend davon ab, die PHP-Direktiven zu kommentieren, /etc/httpd/conf.d/php.confda dies zu Problemen führen wird.

David Houde
quelle
Danke David, hat den Tag gerettet. Mein YUM-Log zeigt ein automatisches Update auf PHP 5.3.26, aber ich verstehe nicht wirklich, warum httpd.conf überschrieben wurde. Grüße
Vielen Dank! Ich ging zu httpd.conf und sah, dass die Zeile LoadModule php5_module pathfilename auskommentiert worden war, ich entfernte gerade das # und alles ist wieder normal.
Nickool
Ich habe diesen Fehler nach einem Upgrade von Ubuntu 16.04 auf 18.04.1 erhalten. Ich kenne die Ursache nicht und es gibt kein Modulverzeichnis, sondern ein Verzeichnis, das für Mods verfügbar und für Mods aktiviert ist. Ich habe Symlinks für php7.2.conf und php7.2.load zu mods-enabled hinzugefügt und auf mods-available gezeigt, und dann konnte apache2 starten.
Chris Jenks
5

Ungültiger Befehl 'php_value', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht in der Serverkonfiguration enthalten ist

Der Apache httpd-2.4 kann mit dem oben genannten Fehler fehlschlagen, wenn Sie ihn versehentlich so konfiguriert haben, dass er ein anderes MPM-Modul als Prefork verwendet (da nur Prefork MPM unter Linux (CentOs7 / RHEL7) einwandfrei funktioniert) die Angelegenheit.

  1. /etc/httpd/conf.modules.d/10-php.conf

    LoadModule php5_module modules / libphp5.so

  2. /etc/httpd/conf.modules.d/00-mpm.conf

    LoadModule mpm_prefork_module modules / mod_mpm_prefork.so

Dasharath Masirkar
quelle
1

Dies kann passieren, wenn Sie Apache so konfiguriert haben, dass es ein anderes MPM als mod_prefork verwendet. Überprüfen Sie, welches Modul vom httpd -VBefehl verwendet wird. Es sollte dir etwas zeigen wie:

...
Server MPM: prefork
...

Ist dies nicht der Fall, überprüfen Sie

/etc/httpd/conf.modules.d/00-mpm.conf

wie hier beschrieben und stellen Sie sicher, dass die nächste Zeile vorhanden und unkommentiert ist:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Wenn Sie ein anderes Modul verwenden müssen, müssen mod_preforkSie diese Zeilen kommentieren oder löschen.

Alex Langer
quelle
1

Wie bereits von David kommentiert, liegt dies wahrscheinlich daran, dass der PHP-Mod von Apache2 deaktiviert wurde.

Für mich war es ein Fehler, als ich Apache (neu) startete:

Der Auftrag für apache2.service ist fehlgeschlagen, da der Steuerprozess mit Fehlercode beendet wurde. Weitere Informationen finden Sie unter "systemctl status apache2.service" und "journalctl -xe".

Dann in journalctl -xe:

AH00526: Syntaxfehler in Zeile 31 von /etc/apache2/sites-enabled/host.conf Ungültiger Befehl 'php_value', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht in der Serverkonfiguration enthalten ist

Dies geschah beim Upgrade von Ubuntu 17.10 auf 18.04 (und in der Folge von PHP7.1 auf 7.2), wodurch libapache2-mod-php * anscheinend vollständig deaktiviert wurde.

Unter Ubuntu sollte das folgende Problem behoben sein:

sudo a2enmod php7.2
sudo systemctl restart apache2
ywarnier
quelle
0

Kommentieren Sie diese Zeilen einfach aus.

ich hatte

#php_value session.save_handler "files"
#php_value session.save_path    "/var/lib/php/session"

Dann führen Sie die "Neu konfigurieren, wenn Sie in Plesk, dann Apache neu starten" schien gut zu funktionieren. Wäre dies nach dem plesk-Update # 53 vor 10 Minuten passiert?

Jimmy
quelle
Hallo, ich benutze nicht Plesk, sondern Zpanel. Was muss ich neu konfigurieren? Vielen Dank
David E.
Ich habe diese Zeilen im Grunde genommen entfernt und dann könnte ein Apache-Neustart das Problem beheben. Aber ich musste den vhost in plesk neu konfigurieren. Es ist nur eine Schaltfläche, nicht sicher, ob es sich um eine entsprechende Schaltfläche handelt.
Jimmy
Das ist etwas störend. Dies ist Teil des Kern-PHP - Sie müssen beim Kompilieren durch die Rahmen springen, um die Sitzungsunterstützung zu deaktivieren. Und laut Handbuch sind beide in PHP_INI_ALL änderbar (aber es könnte sich lohnen, php_admin_value auszuprobieren). Funktioniert Ihr Session-Handler? Benutzt du mod_php?
Symcbean
1
War gerade passiert. Das Auskommentieren der fehlerhaften Zeilen ermöglicht den Start von Apache, entfernt jedoch unter anderem die Sitzungsunterstützung. Wahrscheinlich wurde mod_php deaktiviert. Ich benutze auch Plesk.
David Houde
0

Erstellen Sie vor dem Upgrade von Atomic eine Sicherungskopie der Datei php.conf. Überschreiben Sie dann nach Abschluss des Upgrades die neue Datei mit der alten.

David E.
quelle
0

Ich hatte das ähnliche Problem, erkannte, dass das php5-Modul kommentiert wurde, was bedeutet, dass es nicht geladen werden konnte und in phpmyadmin conf gab es mir Fehler, weil php_admin_value vorhanden war, das wahrscheinlich mit php5_module funktionierte und es nicht vorhanden war. Ich ging zu httpd.conf und kommentierte nicht:

LoadModule php5_module "c:/wamp/bin/php/php5.5.12/php5apache2_4.dll"
Nickool
quelle
0

Bearbeiten : Nachdem ich meine Kommentare unten implementiert hatte, stellte ich fest, dass es einen weiteren Grund gab, warum ich auf dieses Problem gestoßen bin. Auf dem Server ist PHP-FPM implementiert. Ein Teil der Implementierung von PHP-FPM bedeutete, dass dies /etc/httpd/conf.d/php.confdeaktiviert (dh in php.conf.bak umbenannt) wurde. Das letzte Update brachte eine neue php.conf. Infolgedessen war die PHP-FPM-Konfiguration widersprüchlich und verursachte die genannten Fehler. Die Lösung bestand darin, die php.conf einfach in so etwas wie umzubenennen php.conf.bak.feb2019. Dadurch wird die php.conf nicht geladen und es besteht kein Konflikt mit php-fpm.

/// Vor der Bearbeitung: /////

Die Lösung für mich war eine Kombination der hier gegebenen Antworten.

Ich bemerkte diesen Fehler nach der Aktualisierung eines Oracle Linux 7-Servers, der schon lange nicht mehr aktualisiert wurde

Wie von @dasharathmasirkar, @davidhoude @alexlanger vorgeschlagen, ist das Problem darauf zurückzuführen, dass mpm prefork config nach dem Update überschrieben wird.

Um das zu erwähnen:

überprüfe /etc/httpd/conf.modules.d/00-mpm.confund stelle sicher, dass die folgende Zeile nicht kommentiert ist:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Stellen Sie außerdem sicher, dass die andere Worker-MPM auskommentiert ist, damit kein Konflikt entsteht:

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
# LoadModule mpm_worker_module modules/mod_mpm_worker.so

Dann starte Apache neu: apachectl restart

ymdahi
quelle