web-dev-qa-db-fra.com

Erreur lors du démarrage d'Apache "valeur php"

Après la mise à jour de mon vps, j'obtiens l'erreur suivante:

Impossible de démarrer Apache: démarrage de httpd: erreur de syntaxe sur la ligne 31 de /etc/httpd/conf.d/php.conf: commande non valide 'php_value', peut-être mal orthographiée ou définie par un module non inclus dans la configuration du serveur [FAILED]

Activer les modules sur PHP:

[PHP Modules] bz2 calendar Core ctype curl date dom ereg exif fileinfo filter ftp Gd gettext gmp hash iconv imap intl ionCube Loader json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_sqlite shon slm shm_sql wddx xml xmlreader xmlrpc xmlwriter xsl Zip zlib [Zend Modules] the ionCube PHP Loader

Ligne relative à l'erreur:

php_value session.save_handler "fichiers"

Que signifie l'erreur et comment puis-je la corriger?

12
David E.

J'ai récemment rencontré ce problème exact en utilisant Plesk 9.5 sur CentOS.

Je ne peux pas dire avec certitude si cela a été causé par une mise à jour de Plesk ou non. Le client ne pense pas que des modifications aient été apportées récemment, mais Apache n'a pas réussi à démarrer avec cette erreur.

Après une évaluation du système pour m'assurer qu'il n'était pas dû à une violation, j'ai effectué un dépannage et déterminé que mod_php avait été supprimé de la configuration Apache. Après avoir vérifié les paramètres de Plesk, chaque vhost sur la boîte utilisait FastCGI et SuExec.

Lorsque vous utilisez FastCGI et SuExec, vous ne pouvez pas modifier les directives PHP dans php.conf (FastCGI) et .htaccess (SuExec).

Le client avait initialement commenté les lignes incriminées, mais cela a interrompu la prise en charge de la session pour tout. Le seul moyen que j'ai pu résoudre était d'ajouter manuellement mod_php à httpd.conf.

Ajoutez la ligne suivante à la section avec les autres LoadModules. Assurez-vous que le chemin (../modules/) correspond au reste des modules qui s'y trouvent. Il y a de bonnes chances qu'il existe déjà sur votre système et qu'il ait simplement été supprimé de la configuration lors de la mise à jour.

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

bash# apachectl restart

Cela m'a pris au dépourvu et je ne peux pas dire avec certitude que c'est la mise à niveau qui a causé le problème ou si c'est la meilleure solution. Je suis ouvert aux commentaires, mais je vous déconseille fortement de commenter les directives php dans /etc/httpd/conf.d/php.conf car cela cassera des trucs.

12
David Houde

Commande "php_value" non valide, peut-être mal orthographiée ou définie par un module non inclus dans la configuration du serveur

Apache httpd-2.4 peut échouer avec l'erreur ci-dessus si vous l'avez configuré par erreur pour utiliser un autre module mpm que prefork (car seul prefork mpm fonctionne correctement avec php sur Linux (CentOs7/RHEL7). La correction de la configuration Apache httpd pour utiliser prefork mpm résoudra le problème.

  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

6
dasharath masirkar

Cela peut se produire si vous avez configuré Apache pour utiliser un autre MPM que mod_prefork. Vérifiez quel module est utilisé par httpd -V commande. Il devrait vous montrer quelque chose comme:

...
Server MPM: prefork
...

Si ce n'est pas le cas, vérifiez

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

comme décrit ici et assurez-vous que la ligne suivante y est présente et non commentée:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Si vous devez utiliser un autre module que mod_prefork vous devrez commenter ou supprimer ces lignes.

1
Alex Langer

Comme indiqué précédemment par David, cela est probablement dû au fait que le mod PHP a été désactivé depuis Apache2).

Pour moi, cela est apparu comme une erreur lors du (re) démarrage d'Apache:

Le travail pour Apache2.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status Apache2.service" et "journalctl -xe" pour plus de détails.

Ensuite, dans journalctl -xe:

AH00526: Erreur de syntaxe à la ligne 31 de /etc/Apache2/sites-enabled/Host.conf Commande non valide 'php_value', peut-être mal orthographiée ou définie par un module non inclus dans la configuration du serveur

Cela s'est produit lors de la mise à niveau d'Ubuntu 17.10 vers 18.04 (et par conséquent de PHP7.1 vers 7.2), ce qui a apparemment complètement désactivé libapache2-mod-php *.

Sur Ubuntu, les éléments suivants devraient le corriger:

Sudo a2enmod php7.2
Sudo systemctl restart Apache2
1
ywarnier

Commentez simplement ces lignes.

J'avais

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

Ensuite, exécutez la "reconfigurer si vous êtes dans Plesk, puis redémarrez Apache" semble fonctionner correctement. Si cela s'était produit après la mise à jour de Plesk # 53 il y a 10 minutes.

0
Jimmy

J'ai eu le même problème, j'ai réalisé que le module php5 était commenté, ce qui signifie qu'il ne pouvait pas se charger et dans phpmyadmin conf me donnait des erreurs à cause de php_admin_value qui fonctionnait probablement avec php5_module et qui n'était pas en place. Je suis allé sur httpd.conf et je n'ai pas commenté:

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

Edit : Après avoir implémenté mes commentaires ci-dessous, j'ai constaté qu'il y avait une autre raison pour laquelle je rencontrais ce problème. Le serveur a implémenté PHP-FPM. Une partie de l'implémentation de PHP-FPM signifiait que /etc/httpd/conf.d/php.conf a été désactivé (c'est-à-dire renommé en php.conf.bak). La récente mise à jour a apporté un nouveau php.conf. En conséquence, la configuration PHP-FPM était en conflit et provoquait les erreurs mentionnées. Le correctif consistait simplement à renommer php.conf en quelque chose comme php.conf.bak.feb2019. Par conséquent, php.conf ne se charge pas et il n'y a donc pas de conflit avec php-fpm.

/// Avant l'édition: /////

La solution pour moi était une combinaison des réponses fournies ici.

J'ai remarqué cette erreur après la mise à jour d'un serveur Oracle Linux 7 qui n'a pas été mis à jour depuis longtemps

Comme suggéré par @dasharathmasirkar, @davidhoude @alexlanger, le problème vient de la configuration de mpm prefork qui a été remplacée après la mise à jour.

Pour remédier à cette:

vérifier /etc/httpd/conf.modules.d/00-mpm.conf et assurez-vous que la ligne suivante n'est pas mise en commentaire:

# 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

Assurez-vous également que l'autre mpm de travail est mis en commentaire afin qu'il n'entre pas en conflit:

# 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

Redémarrez ensuite Apache: apachectl restart

0
ymdahi

Avant d'exécuter la mise à niveau depuis Atomic, effectuez une sauvegarde du fichier php.conf. Ensuite, une fois la mise à niveau terminée, remplacez le nouveau fichier par l'ancien.

0
David E.