Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检查服务器上是否允许.htaccess的php脚本(函数)_Php_.htaccess_Mod Rewrite - Fatal编程技术网

用于检查服务器上是否允许.htaccess的php脚本(函数)

用于检查服务器上是否允许.htaccess的php脚本(函数),php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,正如标题所说,我正在寻找一个PHP函数来检查您是否可以在服务器上使用.htaccess文件 我应该测试什么 备选案文1: 如果安装了修改重写模块,可能会发生这种情况 备选案文2: 检查“httpd.conf”中是否显示“AllowOverride None” 谢谢您的建议,代码也会有帮助;) 使用php脚本创建一个.htaccess文件,为某个文件写入重定向,然后调用该文件并检查是否重定向。应该是检查.htaccess是否有效的最基本方法之一 编辑:未测试 <?php $html1 = "

正如标题所说,我正在寻找一个PHP函数来检查您是否可以在服务器上使用.htaccess文件

我应该测试什么

备选案文1: 如果安装了修改重写模块,可能会发生这种情况

备选案文2: 检查“httpd.conf”中是否显示“AllowOverride None


谢谢您的建议,代码也会有帮助;)

使用php脚本创建一个.htaccess文件,为某个文件写入重定向,然后调用该文件并检查是否重定向。应该是检查.htaccess是否有效的最基本方法之一

编辑:未测试

<?php
$html1 = "test.html";
$html2 = "test2.html";
$htaccess = ".htaccess";
$string1 = "<html><head><title>Hello</title></head><body>Hello World</body></html>";
$string2 = "<html><head><title>Hello</title></head><body>You have been redirected</body></html>";
$string3 = "redirect 301 /test.html /test2.html";
$handle1 = fopen($html1, "w");
$handle2 = fopen($html2, "w");
$handle3 = fopen($htaccess, "w");

fwrite($handle1, $string1);
fwrite($handle2, $string2);
fwrite($handle3, $string3);

$http = curl_init($_SERVER['SERVER_NAME'] . "/test.html");
$result = curl_exec($http);
$code = curl_getinfo($http, CURLINFO_HTTP_CODE);

if($code == 301) {
    echo ".htaccess works";
} else {
    echo ".htaccess doesn't work";
}
?>

在.htaccess中,简单地说:

SetEnv HTACCESS on
然后,在PHP脚本中,在$\u服务器中查找它:

if ( !isset($_SERVER['HTACCESS']) ) {
  // No .htaccess support
}

看,检查mod_重写是没有帮助的。您可以不安装它,但仍有.htaccess文件。请查看您的web主机文档。如果您具有.htaccess重写功能,我访问/研究过的每个web主机都会在某处通知您。如果他们不宣传这是一种好处,那么很有可能(因为现在大多数ppl都希望获得这种特权)他们不会提供这种好处feature@JTSmith我正在尝试编写一个PHP函数来自动检查这一点。这是我的需求脚本的一部分,用于检查服务器上是否启用了所有必要的功能,以使每个服务器上的应用程序都具有完整的功能。至少在使用mod_php时,您还可以使用
virtual()
执行(伪造)http请求。@ThiefMaster如何伪造该http请求?(示例代码)please@ing. Michal Hudak你真的需要开始把事情弄清楚一点,你不能只是发布一些问题,然后期望每个人都为你编写完整的代码。@Ahatius我正在自己设置函数。不要求整体解决问题。我以前从未使用过
virtual()
函数。我知道语法,但不知道如何将它与
curl()
@Mickle一起使用,所以基本上你可以把任何东西放在那里,然后检查它是否被设置为打开?例如:
SetEnv SomeVariable on
,然后检查是否设置了
$\u服务器['SomeVariable']
?顺便说一句,而不是
!i设置
使用
<代码>!isset
不起作用。你为什么这么认为!isset()将不起作用?到目前为止,它对我非常有效。不过,在这种情况下,可以使用empty,正如您所说的。