2013-03-05 111 views
0

執行由阿帕奇稱爲PHP腳本如下:PHP fopen()函數沒有權限創建文件進行修改

$h = fopen(getcwd()."tmp.txt","w"); 
fprintf($h,"hi"); 
fclose($h); 

生成由我個人的用戶ID與644組的權限所擁有的文件。但是,再次執行該腳本會導致錯誤,因爲Apache/PHP以用戶wwwrun身份運行,因此沒有權限覆蓋該文件或chmod它。

這些文件所在的目錄位於我的主目錄中,並具有777權限。我如何讓PHP創建由wwwrun擁有的文件,或者使用666權限創建文件,或者執行其他操作,以允許它被PHP覆蓋。

我很理想地尋找一種解決方案,它也適用於PHP通過外部程序使用exec函數調用該文件的情況;這似乎也遭受同樣的問題,因爲外部程序運行爲wwwrun,但由外部程序創建的文件屬於我的個人用戶標識。

+0

退房'umask'。 – 2013-03-05 14:27:32

+0

Apache作爲www-data運行,不可能創建一個擁有其他帳戶的文件。允許非root程序將所有權更改爲其他用戶將是一個巨大的安全漏洞。是你的家庭目錄sgid/suid(2777/4777)? – 2013-03-05 14:27:51

回答

0

事實證明,有問題的目錄被掛載在不支持linux文件權限的文件系統上。