2010-07-05 3 views
5

Есть ли простой способ определить, установлен ли mod_security &, используя только PHP? Идеально, если не выполняются никакие команды типа exec() терминала.Обнаруживать, установлен ли Mod_Security с помощью PHP?

Некоторые люди рекомендовали использовать apache_get_modules(), но этот конкретный веб-хост не позволяет ему показывать. Это также упоминается другими пользователями здесь: http://www.devcomments.com/apache_get_modules-solution-to130703.htm

ответ

4

Попробуйте apache_get_modulesfunction, чтобы получить массив загруженных модулей. Если загружен этот модуль, но не в списке, вы можете попробовать phpinfo с phpinfo(INFO_MODULES) вместо:

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

следует отметить, это может быть сделано только если PHP установлен как модуль Apache. – Artefacto

+0

Эта функция не работает корректно для всех хостов. По некоторым причинам некоторые хосты не возвращают все мотивы apache, используя эту функцию. Другое сообщение на нем: http://www.devcomments.com/apache_get_modules-solution-to130703.htm Любые другие идеи? – user384030

2

Схватив за соломинку здесь.

Попробуйте, чтобы ваш скрипт сделал запрос самому себе (через file_get_contents или, возможно, расширение cURL), которое отключило бы mod_security. Если она возвращает 403 (или любой другой ответ Mod_security по умолчанию), что должно быть достаточно информации для вас, чтобы пойти на ...

3

Вы можете сделать просто создать файл test.php и использование ..

<?php phpinfo(); ?> 

и посмотреть на apache2handler, и посмотреть на: нагруженных модулей .. что-то вроде этого ...

http://gyazo.com/bcba303469f23671f7213e1478788cbd.png

-Mike

+2

Это не работает для PHP-FPM, и в этом случае нет блока Apache2handler – vrijdenker