mod_rewrite - jak sprawdzić obecność z poziomu PHP

W jaki sposób z poziomu PHP mogę sprawdzić czy mod_rewrite jest aktywny, dostępny, włączony? Czy jest to w ogóle możliwe?

  • Programistyczne sprawdzenie czy mod_rewrite jest zainstalowane i działa.

    • Jeżeli jest dostępna funkcja apache_get_modules (PHP 5) to możemy użyć jej do sprawdzania,
    • Jeżeli nie to można przeparsować phpinfo(). (PHP 4)

    Poniżej kod który robi to i dodatkowo pozwala sprawdzić czy zainstalowano dowolny moduł:

    < ?php
    
    function CzyJestModul($nazwa)
    {
        $wynik = false;
        if (function_exists('apache_get_modules'))
        {
             $wynik = in_array($nazwa, apache_get_modules());
        }
        else
        {
             ob_start();
            phpinfo(INFO_MODULES);
            $contents = ob_get_contents();
            ob_end_clean();
            $wynik = (strpos($contents, $nazwa) !== false);
        }
        return $wynik;
    }
    
    function CzyJestModRewrite()
    {
        return CzyJestModul("mod_rewrite");
    }
    
    echo CzyJestModRewrite() ? "Jest mod_rewrite!" : "Nie ma mod_rewrite";
    ? >
    

    Powinieneś nacisnać szary kciuk w górę. Z góry dziękuję!

  • Jakoś w ten deseń:

    <?php
     if( ! function_exists('apache_get_modules') ){ phpinfo(); die; }
     $result = false;
     if(in_array('mod_rewrite',apache_get_modules())) $result = true;
    ?>
    

  • Jest jeszcze jeden sposób, mniej PHP-owy ale daje rade, jeżeli możemy wgrywać pliki .htaccess na server można zrobić coś w stylu

    <ifmodule mod_rewrite.c=""> SetEnv "mod_rewrite" "ok" </ifmodule>

    jeżeli modrewrite jest dostępny to w PHP w $SERVER['mod_rewrite'] będzie wartość "ok"

  • <?php phpinfo(); ?>
    

    Szukaj w sekcji Loaded modules.

Zaloguj się, aby dodać swoją odpowiedź