Альтернативы apache_get_modules() для получения списка загруженных модулей apache
Я пытаюсь использовать php для получения списка загруженных модулей apache с помощью apache_get_modules()
, но я получаю сообщение об ошибке, что эта функция undefined.
От поиска кажется, что проблема заключается в том, что
это работает только при установке PHP как модуль Apache. Это не будет функция при использовании PHP как CGI (например: suPHP)
Я не уверен, что это так, но я нахожусь на общем хостинге. Любые идеи, как узнать список загруженных модулей apache, желательно с php, но я открыт для предложений.
Ответы
Ответ 1
- phpinfo() сообщит вам, как установлен PHP, особенно строка API Сервера.
- Вы можете проанализировать конфигурационные файлы для Apache, чтобы узнать, какие модули настроены.
- Вы можете запустить что-то вроде
apache2 -t -D DUMP_MODULES
, чтобы получить список модулей.
Ответ 2
apache_get_modules() доступен только в том случае, если PHP установлен как модуль, а не как CGI. Именно по этой причине вы не можете использовать эту функцию и страдать от ошибки. Другая причина была вызвана директивой disable_functions в вашем php.ini. вы можете использовать следующий письменный PHP-код, чтобы проверить, включен ли модуль перезаписи или нет в вашем случае при использовании API-сервера CGI
<?php
if (is_mod_rewrite_enabled()) {
print "The apache module mod_rewrite is enabled.<br/>\n";
} else {
print "The apache module mod_rewrite is NOT enabled.<br/>\n";
}
/**
* Verifies if the mod_rewrite module is enabled
*
* @return boolean True if the module is enabled.
*/
function is_mod_rewrite_enabled() {
if ($_SERVER['HTTP_MOD_REWRITE'] == 'On') {
return TRUE;
} else {
return FALSE;
}
}
?>
Чтобы проверить, используете ли вы Php в CGI или Apache, вы можете использовать процедуру ниже
Создайте файл check_phpinfo.php и напишите код PHP, написанный ниже -
<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>
Затем файл и перейдите к URL-адресу - www.example.com/check_phpinfo.php, и он покажет вам php файл на сервере
В четырех строках вы можете увидеть " API-интерфейс сервера CGI/FastCGI), который означает, что вы используете PHP в CGI/Fast CGI
Ответ 3
<?php
// Print Apache Modules
print_r(apache_get_modules());
?>