Error al iniciar Apache "valor php"

12

Después de actualizar mi vps, aparece el siguiente error:

Error al iniciar Apache: Iniciando httpd: Error de sintaxis en la línea 31 de /etc/httpd/conf.d/php.conf: Comando no válido 'php_value', quizás mal escrito o definido por un módulo no incluido en la configuración del servidor [FALLIDO]

Habilitar módulos en PHP:

[Módulos PHP] 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 Phar_splite Sflmfiteitefronte Phar readme en la página de inicio. wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Módulos Zend] el cargador PHP ionCube

Línea relativa al error:

php_value session.save_handler "archivos"

¿Qué significa el error y cómo puedo solucionarlo?

David E.
fuente

Respuestas:

12

Recientemente me encontré con este problema exacto usando Plesk 9.5 en CentOS.

No puedo decir con certeza si fue causado por una actualización de Plesk o no. El cliente no cree que se hayan realizado cambios recientemente, pero Apache no pudo comenzar con este error.

Después de una evaluación del sistema para garantizar que no se debía a una violación, resolví algunos problemas y determiné que se mod_phphabía eliminado de la configuración de Apache. Después de verificar la configuración de Plesk, cada vhost en la caja estaba usando FastCGI y SuExec.

Al usar FastCGI y SuExec, no puede cambiar las directivas PHP en php.conf (FastCGI) y .htaccess (SuExec).

El cliente había comentado originalmente las líneas ofensivas, pero esto rompió el soporte de la sesión para todo. La única forma en que pude resolverlo fue agregar manualmente mod_php a httpd.conf.

Agregue la siguiente línea a la sección con los otros LoadModule's. Asegúrese de que la ruta (../modules/) coincida con el resto de los módulos allí. Lo más probable es que ya exista en su sistema y simplemente se eliminó de la configuración durante la actualización.

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

bash# apachectl restart

Esto me tomó por sorpresa y no puedo decir con certeza si fue la actualización la que causó el problema o si esta es la mejor solución. Estoy abierto a comentarios, pero desaconsejo comentar las directivas de php /etc/httpd/conf.d/php.confya que romperá cosas.

David Houde
fuente
gracias David, salvó el día. Mi registro de yum muestra una actualización automática de php 5.3.26 pero realmente no entiendo por qué se sobreescribió httpd.conf. Saludos
¡Gracias! Fui a httpd.conf y vi que la línea LoadModule php5_module pathfilename había sido comentada, simplemente eliminé el # y todo volvió a la normalidad.
Nickool
Obtuve este error después de una actualización de Ubuntu 16.04 a 18.04.1. No sé la causa y no hay un directorio de módulos, sino un directorio disponible para mods y habilitado para mods. Agregué enlaces simbólicos para php7.2.conf y php7.2.load a mods habilitado apuntando a mods-available y luego apache2 pudo comenzar.
Chris Jenks
5

Comando no válido 'php_value', quizás mal escrito o definido por un módulo no incluido en la configuración del servidor

Apache httpd-2.4 puede fallar con el error anterior si por error lo configuró para usar otro módulo mpm que no sea prefork (ya que solo prefork mpm funciona bien con php en Linux (CentOs7 / RHEL7)). la cuestión.

  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
fuente
1

Esto podría suceder si configuró Apache para usar otro MPM que no sea mod_prefork. Verifique qué módulo está usando el httpd -Vcomando. Debería mostrarte algo como:

...
Server MPM: prefork
...

Si no es así, verifique

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

como se describe aquí y asegúrese de que la siguiente línea esté presente y sin comentarios:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

En caso de que necesite usar otro módulo que mod_preforkno sea , deberá comentar o eliminar estas líneas.

Alex Langer
fuente
1

Como comentó David anteriormente, esto es probable porque el mod PHP ha sido deshabilitado desde Apache2.

Para mí, apareció como un error al (re) iniciar Apache:

El trabajo para apache2.service falló porque el proceso de control salió con el código de error. Consulte "systemctl status apache2.service" y "journalctl -xe" para más detalles.

Luego, dentro de journalctl -xe:

AH00526: Error de sintaxis en la línea 31 de /etc/apache2/sites-enabled/host.conf Comando no válido 'php_value', quizás mal escrito o definido por un módulo no incluido en la configuración del servidor

Esto sucedió al actualizar Ubuntu 17.10 a 18.04 (y, en consecuencia, de PHP7.1 a 7.2), que aparentemente deshabilitó completamente libapache2-mod-php *.

En Ubuntu, lo siguiente debería solucionarlo:

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

Solo comente esas líneas.

yo tenía

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

Luego ejecute "reconfigure si está en Plesk, luego reinicie apache" parecía funcionar bien. ¿Sucedió esto después de la actualización plesk # 53 hace 10 minutos?

Palanqueta
fuente
Hola, no estoy usando Plesk, usando Zpanel. ¿Qué necesito reconfigurar? Gracias
David E.
Básicamente eliminé esas líneas y luego un reinicio de apache puede solucionarlo. Pero tuve que reconfigurar el vhost en plesk. Es solo un botón, no estoy seguro del equivalente en cpanel.
Jimmy
Esto es un poco inquietante. Esto es parte del núcleo de php: debe saltar los aros en tiempo de compilación para deshabilitar el soporte de sesión. Y de acuerdo con el manual, ambos se pueden cambiar en PHP_INI_ALL (pero podría valer la pena probar php_admin_value). ¿Funciona tu controlador de sesión? ¿Estás usando mod_php?
symcbean
1
Acabo de pasar esto. Comentar las líneas ofensivas permitirá que Apache se inicie, pero elimina el soporte de sesión, entre otras cosas. Lo más probable es que mod_php esté deshabilitado. Estoy usando Plesk también.
David Houde
0

Antes de ejecutar la actualización desde Atomic, haga una copia de seguridad del archivo php.conf. Luego, una vez completada la actualización, sobrescriba el nuevo archivo con el anterior.

David E.
fuente
0

Tuve el mismo problema, me di cuenta de que el módulo php5 estaba comentado, lo que significa que no se pudo cargar y en phpmyadmin conf me estaba dando errores debido a que php_admin_value probablemente funcionaba con php5_module y no estaba en su lugar. Fui a httpd.conf y sin comentarios:

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

Editar : después de implementar mis comentarios a continuación, descubrí que había otra razón por la que me encontraba con este problema. El servidor tiene implementado PHP-FPM. Parte de la implementación de PHP-FPM significaba que /etc/httpd/conf.d/php.confestaba deshabilitado (es decir, renombrado a php.conf.bak). La actualización reciente trajo un nuevo php.conf. Como resultado, la configuración de PHP-FPM era conflictiva y causaba los errores mencionados. La solución fue simplemente cambiar el nombre de php.conf a algo así php.conf.bak.feb2019. Como resultado, php.conf no se carga y, por lo tanto, no hay conflicto con php-fpm.

/// Antes de editar: /////

La solución para mí fue una combinación de las respuestas proporcionadas aquí.

Noté este error después de actualizar un servidor Oracle Linux 7 que no se ha actualizado en mucho tiempo

Según lo sugerido por @dasharathmasirkar, @davidhoude @alexlanger, el problema se debe a que la configuración de mfor prefork se anula después de la actualización.

Para abordar esto:

compruebe /etc/httpd/conf.modules.d/00-mpm.confy asegúrese de que la siguiente línea no esté comentada:

# 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

Además, asegúrese de que el otro trabajador mpm esté comentado para que no entre en conflicto:

# 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

Luego reinicie apache: apachectl restart

ymdahi
fuente