2010-07-05 10 views
10

Próbuję użyć php, aby uzyskać listę załadowanych modułów apache, używając apache_get_modules(), ale pojawia się błąd, że ta funkcja jest niezdefiniowana.Alternatywy dla apache_get_modules(), aby uzyskać listę załadowanych modułów apache

Od poszukiwania Wydaje się, że problemem jest to, że

to działa tylko jeśli PHP jest zainstalowane jako moduł Apache. Ta funkcja nie będzie przy użyciu PHP jako CGI (ex: suPHP)

nie jestem pewien, czy jest to przypadek, ale jestem na shared hostingu. Wszelkie pomysły, jak znaleźć listę załadowanych modułów apache, najlepiej z php, ale jestem otwarty na sugestie.

Odpowiedz

7
  • phpinfo() powie, w jaki sposób PHP jest zainstalowane, szczególnie wiersz Server API.
  • Można przeanalizować pliki konfiguracyjne Apache, aby dowiedzieć się, które moduły są skonfigurowane.
  • Można uruchomić coś w rodzaju apache2 -t -D DUMP_MODULES, aby uzyskać listę modułów.
+1

sprawdzone phpinfo i okazało się to być zainstalowany jako CGI. Czy możesz podać więcej szczegółów na temat tego, jak uzyskać jeden z ostatnich 2 punktów? Jestem na współdzielonym hostingu, więc nie masz uprawnień administratora. – devling

+0

@devling masz jakieś słowo na temat tego błędu i cierpię z powodu tego samego błędu –

+0

@devling Mam ten problem rozwiązany i dodałem informację, która pomogła mi obejść ten problem, który sprawdziłeś w mojej odpowiedzi –

-5
<?php 
// Print Apache Modules 
print_r(apache_get_modules()); 
?> 
+2

Witamy w StackOverflow! Spróbuj podać kontekst swojej odpowiedzi. Dzięki temu użytkownicy mogą uczyć się na podstawie odpowiedzi i stosować ją w innym miejscu zamiast tylko w tym jednym scenariuszu. Możesz znaleźć dalsze sugestie, jak pisać swoje odpowiedzi tutaj: http://stackoverflow.com/help/how-to-answer – Newd

+2

PO stwierdził już, że ta funkcja jest niedostępna. –

0

apache_get_modules() jest dostępna tylko wtedy, gdy jest zainstalowane PHP jako moduł, a nie jako CGI. Z tego powodu nie możesz korzystać z tej funkcji i cierpieć z powodu błędu. Innym powodem byłaby dyrektywa disable_functions w twoim php.ini. można wykorzystać następujące pisemne kodu php, aby sprawdzić, czy moduł rewrite jest włączony czy nie w przypadku, gdy za pomocą serwera CGI API

<?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; 
    } 
} 
?> 

Aby sprawdzić, czy używasz PHP pod CGI lub Apache można użyć poniższej procedury

Utwórz plik check_phpinfo.php i zapis kodu PHP napisane poniżej -

<?php 

// Show all information, defaults to INFO_ALL 
phpinfo(); 

?> 

Następnie plik i przejdź do adresu URL jak - www.example.com/check_phpinfo.php i pokaże Ci php plik na serwerze

w czterech linii widać "Server API CGI/FastCGI" oznaczająca używasz PHP pod CGI/fast CGI

+0

@delving Próbowałem dodać informacje w mojej odpowiedzi, które mogą pomóc Tobie i innym –

Powiązane problemy