mod_rewrite가 php에서 활성화 되어 있는지 확인하는 방법
혹시 확인 가능한지 궁금합니다.mod_rewrite
는 의 Apache AND IIS에서 활성화됩니다.
IIS용 ModRewrite가 존재합니다.체크해 주세요.
그래서, 나는 다음을 체크하는 PHP 스크립트를 찾고 있다.mod_rewrite
Apache 및 IIS에서 사용할 수 있습니다.
그런 대본을 아는 사람, 쓸 줄 아는 사람?
특히 Microsoft IIS의 경우.
감사합니다!
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
이네이블입니다.
이 코드를 복사해서 실행해 보세요.
<?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>
### .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에서도 동작하는지는 알 수 없지만(확인 방법은 없습니다) 가능성은 매우 높습니다.
info라는 파일을 업로드 합니다.다음 코드를 사용하여 php를 실행합니다.
<?php
phpinfo();
페이지에서 mod_rewrite를 검색하여 Loaded Modules에서 찾을 수 있는지 확인합니다.
쉽게 찾을 수 있는 문제를 그렇게 어렵게 만들지 마라phpinfo();
도움이 되길 바랍니다!
감사합니다.
명령줄을 통해 우리는 centO에서 이것을 할 수 있습니다.
httpd -l
<?php
phpinfo();
?>
[ Loaded Modules ]행의 apache2handler의 [Configuration]를 확인합니다.
이것은 간단하고 효과가 있습니다.
<?php foreach( apache_get_modules() as $module ) echo "$module<br />"; ?>
현재 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에서는 작동하지 않았습니다.
설치된 Apache 모듈 목록을 가져와 이 모듈과 대조할 수 있습니다..dll(또는 Linux와 동등한) 파일을 검색하여 설치 여부를 확인할 수 있습니다.
두 줄의 코드:
$isEnabled = in_array('mod_rewrite', apache_get_modules());
echo ($isEnabled) ? 'Enabled' : 'Not enabled';
mod rewrite에 관한 또 다른 아이디어는 서버가 필요하지 않은 php 문제에 의존한다는 것입니다.가능성이 있는 경우 test.php에 .htaccess를 test.php에 다시 쓰는 테스트 디렉토리를 만들고 http를 통해 디렉토리를 호출하여 test.php에 입력한 예상 결과를 얻을 수 있는지 확인합니다.
정말 더럽다.
~를 통해 한 가지 방법이 더 있습니다.
exec('/usr/bin/httpd -M | find "rewrite_module"',$output);
ifmod_rewrite
로딩되면 출력에 "syslog_syslog"가 반환됩니다.
다음 기능을 사용합니다.
function apache_module_exists($module)
{
return in_array($module, apache_get_modules());
}
IIS 영웅 및 영웅의 경우:
mod_rewrite를 찾을 필요가 없습니다.Rewrite 2 모듈을 설치하고 .htaccess 파일을 Import합니다.
실제로 모듈이 로드되었다고 해서 .htaccess를 배치하는 디렉토리에서 반드시 디렉티브가 유효하게 되어 있는 것은 아닙니다.필요한 것은 다음과 같습니다.다시 쓰기는 가능합니까?확실히 알 수 있는 유일한 방법은 실제 테스트를 수행하는 것입니다.서버에 몇 가지 테스트파일을 저장하고 HTTP로 요구합니다.
좋은 소식:이 작업을 수행하기 위해 라이브러리를 만들었습니다(다양한 .htaccess 기능을 검출).이 라이브러리를 사용하면 다음 작업만 수행할 수 있습니다.
require 'vendor/autoload.php';
use HtaccessCapabilityTester\HtaccessCapabilityTester;
$hct = new HtaccessCapabilityTester($baseDir, $baseUrl);
if ($hct->rewriteWorks()) {
// rewriting works
}
($baseDir 및 $baseUrl 대신 테스트파일을 저장할 경로와 도달 가능한 URL을 지정해야 합니다.)
모듈이 로딩되어 있는지 알고 싶을 경우 다음을 수행할 수 있습니다.
if ($hct->moduleLoaded('rewrite')) {
// mod_rewrite is loaded (tested in a real .htaccess by using the "IfModule" directive)
}
라이브러리는 https://github.com/rosell-dk/htaccess-capability-tester 에서 이용하실 수 있습니다.
언급URL : https://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-enabled-in-php
'source' 카테고리의 다른 글
마이그레이션 시 원시 SQL 실행 (0) | 2022.09.11 |
---|---|
PHP CURL에서 POST에서 GET으로 전환하는 방법 (0) | 2022.09.11 |
MIN() 함수를 사용한 MySQL의 잘못된 결과 (0) | 2022.09.11 |
Grunt, NPM 및 Bower의 차이(패키지).json vs bower.json) (0) | 2022.09.11 |
JavaScript의 eval()이 나쁜 것은 언제입니까? (0) | 2022.09.11 |