2011-04-12 269 views
0

我有一個腳本,我在管理控制面板中使用,以便用戶輕鬆更改某些配置文件的寫入權限,但我遇到了一些問題。PHP chmod()不會將權限更改爲0444

有兩個主開關,一個允許用戶將文件更改爲'可寫'=> 0777,另一個保護'=> 0444。這第一個工作正常,但第二個,當我運行它,沒有錯誤顯示,它的行爲就好像它已成功更改權限,但在FTP中查看顯示該文件實際上是0644,看起來它不能成功更改爲0444。有任何想法嗎?

+4

更改爲'0444'對於交換機並沒有多大意義,因爲您再也無法擁有寫入權限,因此永遠無法將其切換回來。 – jeroen 2011-04-12 22:51:07

+0

PHP可能沒有權限將其更改爲「0444」。 – iamandrus 2011-04-12 22:58:12

+0

沒有理由刪除所有者的寫入。如果有的話,會出現一些嚴重的服務器配置問題。 – 2011-04-12 23:02:14

回答

0

執行PHP的帳戶必須先擁有該文件,然後才能修改權限。 「www-data」或「apache」是常見的用戶帳戶。

同時讓全局可讀或可寫的東西是非常糟糕的主意。使其可執行也是一個壞主意。您可能需要400和chmod 500

0

我認爲這種方法是錯誤的,php總是需要寫權限才能在將來改變任何事情,所以硬文件只讀權限是不可行的。

解決方案是數據庫表或其他配置文件,用於跟蹤哪些文件被鎖定,哪些文件可以更改(以及由誰......)。然後,您可以添加php檢查,以查看某個用戶是否可以更改某個文件。