Альтернативы 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());
?>