2014-03-01 50 views
-1

有没有什么办法可以用php代码修改.htaccess通过php代码修改.htaccess

我只是试图

$handle=fopen("./dir/.htaccess",w); 
fwrite($handle, "order deny,allow\ndeny from all"); 
fclose($handle); 

,这似乎并不工作。

P.S.我无法使用中的httpd.conf,因为我没有root权限。

+0

什么是文件权限? PHP运行的用户是什么?你收到什么错误信息?尝试把'error_reporting(-1); ini_set('display_errors',1);'在代码的顶部。 – Mike

+0

php作为'apache'运行;并且文件权限是755 – Dheerendra

+0

如果权限是755,除非它属于'apache',否则您将无法写入它。 – Mike

回答

0

代码是正确的。唯一的问题是运行php的用户是apache。我使用whoami命令检查了这一点。因此文件权限需要相应地改变。

将文件权限更改为777完美。
感谢Mike

+0

777权限就像是让你的前门解锁。请注意,共享您的服务器的任何其他用户现在可以覆盖您的.htaccess文件。将其重新更改为644或444,直到需要再次更改为止。考虑将代码放入.htaccess本身,以限制网络访问者访问它(虽然这不会阻止它对付系统上的其他人)。 –

+0

@PhilPerry我明白风险。由于我需要修改的.htaccess是叶级别.htaccess。所以它不会影响我的整个网站,但只是一个目录。我在使用之前计算了风险。 – Dheerendra

+0

好的,只要您了解将文件或目录打开以供任何人写入的潜在后果。我提出了建议,因为我经常看到有人试图对新手有所帮助,他们首先以“首先将所有内容修改为777”开始他们的指示。这在40年前可能还行,但任何电脑上的黄金法则都是“不要相信任何其他人”。 –

0

是的,您可以使用PHP代码修改.htaccess

你可以做这样的..

$handle=fopen(".htaccess",'a'); //<--- Surround the 'a' with quotes. You didn't do that btw 
fwrite($handle, "order deny,allow\ndeny from all"); 
fclose($handle); 

尝试从非常同一位置的.htaccess这段代码运行。

+0

如果它不适用于'w',它可能不适用于'a',因为唯一改变的是文件指针位置。另外,如果使用非引号字符串,它仍然可以按预期工作,但如果启用了错误报告,则会产生警告。 – Mike

+0

如果你密切注意我的代码,我已经改变了'.htacccess'的位置,我想OP是指一个不存在的'.htaccess'文件。 –

+1

啊,我没注意到。你很可能是对的。 – Mike