복붙노트

PHP에서 mod_rewrite가 활성화되었는지 확인하는 방법은 무엇입니까?

PHP

PHP에서 mod_rewrite가 활성화되었는지 확인하는 방법은 무엇입니까?

PHP에서 mod_rewrite가 Apache와 IIS에서 활성화되어 있는지 확인하는 것이 가능한지 궁금합니다.

IIS 용 ModRewrite가 있습니다. 여기에서 확인하십시오.

그래서, 아파치와 IIS에서 mod_rewrite를 확인하는 PHP 스크립트를 찾고 있습니다.

누구든지 그런 스크립트를 알고 있거나 쓸 수 있습니까?

특히 Microsoft IIS의 경우.

감사!

해결법

  1. ==============================

    1.mod_php를 사용한다면, apache_get_modules ()를 사용할 수 있습니다. 이렇게하면 모든 활성화 된 모듈의 배열이 반환되므로 mod_rewrite가 활성화되어 있는지 확인하기 만하면됩니다.

    mod_php를 사용한다면, apache_get_modules ()를 사용할 수 있습니다. 이렇게하면 모든 활성화 된 모듈의 배열이 반환되므로 mod_rewrite가 활성화되어 있는지 확인하기 만하면됩니다.

    in_array('mod_rewrite', apache_get_modules());
    

    안타깝게도 CGI를 사용하여이 작업을 수행하려고 할 가능성이 가장 높습니다.

    다음을 사용하여 테스트 할 수 있습니다.

    strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false
    

    위의 조건이 true로 평가되면 mod_write가 활성화됩니다.

  2. ==============================

    2.

    <?php
     if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
     $res = 'Module Unavailable';
     if(in_array('mod_rewrite',apache_get_modules())) 
     $res = 'Module Available';
    ?>
    <html>
    <head>
    <title>A mod_rewrite availability check !</title></head>
    <body>
    <p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
    </body>
    </html>
    
  3. ==============================

    3.나는 Christian Roy의 해결책을 좋아한다.

    나는 Christian Roy의 해결책을 좋아한다.

    ###  .htaccess
    
    <IfModule mod_rewrite.c>
    
        # Tell PHP that the mod_rewrite module is ENABLED.
        SetEnv HTTP_MOD_REWRITE On
    
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # The rest of your rewrite rules here
    
    </IfModule>
    

    그런 다음 PHP 코드를 체크인 할 수 있습니다.

        array_key_exists('HTTP_MOD_REWRITE', $_SERVER);
    

    이 방법이 IIS에서도 작동하는지는 알지 못하지만 체크 할 방법은 없습니다.하지만 그 확률은 좋습니다.

  4. ==============================

    4.이 코드와 함께 info.php 파일을 업로드하고 실행하십시오 :

    이 코드와 함께 info.php 파일을 업로드하고 실행하십시오 :

    <?php 
    phpinfo();
    

    페이지에서 mod_rewrite를 검색하고로드 된 모듈에서 찾을 수 있는지 확인하십시오.

  5. ==============================

    5.phpinfo ()에서 간단하게 찾을 수 있습니다.

    phpinfo ()에서 간단하게 찾을 수 있습니다.

    호프 도움이!

    감사

  6. ==============================

    6.커맨드 라인을 통해 우리는 이것을 할 수 있습니다. 우리는 이것을 할 수 있습니다.

    커맨드 라인을 통해 우리는 이것을 할 수 있습니다. 우리는 이것을 할 수 있습니다.

    httpd -l
    
  7. ==============================

    7.

    <?php
    phpinfo();
    ?>
    

    apache2handler의 Loaded Modules 행에있는 Configuration에서 찾습니다.

    이것은 간단하고 효과적입니다.

    <?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
    
  8. ==============================

    8.이것이 Apache와 IIS 모두에서 Mod_rewrite가 활성화되었는지 확인하는 현재 방법입니다.

    이것이 Apache와 IIS 모두에서 Mod_rewrite가 활성화되었는지 확인하는 현재 방법입니다.

    /**
     * --------------------------------------------------------------
     *  MOD REWRITE CHECK
     * --------------------------------------------------------------
     *                                        - By A H Abid
     * Define Constant for MOD REWRITE
     * 
     * Check if server allows MOD REWRITE. Checks for both 
     * Apache and IIS.
     * 
     */
    if( function_exists('apache_get_modules') && in_array('mod_rewrite',apache_get_modules()) )
        $mod_rewrite = TRUE;
    elseif( isset($_SERVER['IIS_UrlRewriteModule']) )
        $mod_rewrite = TRUE;
    else
        $mod_rewrite = FALSE;
    define('MOD_REWRITE', $mod_rewrite);
    

    내 로컬 컴퓨터에서 작동하며 IIS 기반 웹 호스트에서도 작동합니다. 그러나 특정 apache 서버에서는 apache_get_modules ()가 비활성화되었지만 mod_rewrite가 해당 서버에서 활성화되어 있으므로 Apache에서 작동하지 않았습니다.

  9. ==============================

    9.설치된 아파치 모듈의 목록을 얻고 그 모듈을 점검 할 수있다. 아마도 .dll (또는 linux에 해당하는) 파일을 검색하여 설치되었는지 확인할 수 있습니다.

    설치된 아파치 모듈의 목록을 얻고 그 모듈을 점검 할 수있다. 아마도 .dll (또는 linux에 해당하는) 파일을 검색하여 설치되었는지 확인할 수 있습니다.

  10. ==============================

    10.두 줄의 코드 :

    두 줄의 코드 :

    $isEnabled = in_array('mod_rewrite', apache_get_modules());
    echo ($isEnabled) ? 'Enabled' : 'Not enabled';
    
  11. ==============================

    11.exec ()를 통한 또 다른 방법.

    exec ()를 통한 또 다른 방법.

    exec('/usr/bin/httpd -M | find "rewrite_module"',$output);
    

    mod_rewrite가로드되면 출력에서 ​​"rewrite_module"을 반환합니다.

  12. ==============================

    12.mod rewrite에 관한 또 다른 아이디어는 사실 더러운 해킹입니다. 서버 의존성은 PHP와 관련이 없습니다. 왜, 당신이 possibillity 있다면, 테스트 디렉토리를 만들어 test.php에 다시 쓰는 .htaccess를 넣어 http를 통해 디렉터리를 호출하고 당신이 test.php에 넣어 예상 결과를 얻을 수 있는지 확인하십시오.

    mod rewrite에 관한 또 다른 아이디어는 사실 더러운 해킹입니다. 서버 의존성은 PHP와 관련이 없습니다. 왜, 당신이 possibillity 있다면, 테스트 디렉토리를 만들어 test.php에 다시 쓰는 .htaccess를 넣어 http를 통해 디렉터리를 호출하고 당신이 test.php에 넣어 예상 결과를 얻을 수 있는지 확인하십시오.

    실제로, 더러운.

  13. from https://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-enabled-in-php by cc-by-sa and MIT license