2014-03-01 51 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