2010-07-05 35 views
5

¿Hay alguna manera simple de detectar si mod_security está instalado & habilitado usando solo PHP? Lo ideal sería que no se ejecutaran comandos de tipo de terminal exec().¿Detecta si Mod_Security está instalado con PHP?

Algunas personas han recomendado el uso de apache_get_modules() pero este host web específico no permite que se muestre. Esto también es mencionado por otros usuarios aquí: http://www.devcomments.com/apache_get_modules-solution-to130703.htm

Respuesta

4

Pruebe el apache_get_modulesfunction para obtener una matriz de los módulos cargados. Si se carga ese módulo, pero no en la lista, es posible que desee probar phpinfo con phpinfo(INFO_MODULES) lugar:

ob_start(); 
phpinfo(INFO_MODULES); 
$contents = ob_get_clean(); 
$moduleAvailable = strpos($contents, 'mod_security') !== false; 
+1

debe tenerse en cuenta esto se puede hacer solo si PHP está instalado como un módulo de Apache. – Artefacto

+0

Esta función no parece funcionar correctamente para todos los hosts. Algunos hosts parecen no devolver todos los mods de apache usando esta función por alguna razón. Otra publicación: http://www.devcomments.com/apache_get_modules-solution-to130703.htm ¿Alguna otra idea? – user384030

2

aferrándose a un clavo ardiendo.

Intente hacer que su script se haga una solicitud (a través del file_get_contents o quizás la extensión cURL) que desconectaría mod_security. Si se devuelve un 403 (o lo que sea respuesta predeterminada de mod_security es), que debería ser suficiente información para que usted pueda seguir ...

3

Usted puede hacer simplemente crear un archivo test.php y el uso ..

<?php phpinfo(); ?> 

y observe el apache2handler, y veamos: módulos cargados .. algo como esto ...

http://gyazo.com/bcba303469f23671f7213e1478788cbd.png

-Mike

+2

Esto no parece funcionar para PHP-FPM, en cuyo caso no hay un bloque Apache2handler – vrijdenker

Cuestiones relacionadas