2013-02-19 74 views
0

test.php打開test.txt並寫入它。它在一個託管服務器上正常工作。如何編寫文本文件

將代碼遷移到另一個主機後,test.php現在不能寫出test.txt。錯誤顯示:

Warning: fopen(/home/username/public_html/test.txt) 
[function.fopen]: failed to open stream: Permission denied 

我缺少什麼賦予權限時test.txt文件設置爲777在原裝主機,test.txt的設置它只會工作到755

爲test.php寫入這個新的主機上沒有777的文件?

此外,文件上傳PHP腳本也無法正常工作。

+2

嘗試對整個文件夾給予授權 – user2051349 2013-02-19 22:36:57

+0

測試文件位於public_html文件夾中,該文件夾設置爲750.我應該如何設置它?爲什麼不只是文件? – detailCode 2013-02-19 22:39:08

+1

在前一臺主機上,php運行時擁有文件所有者權限,並且以有限權限(比如'www','apache'或'nobody')作爲用戶運行,並且不能更改其他用戶文件。 – 2013-02-19 22:39:13

回答

1

這不僅僅是重要的許可,還包括誰擁有這些文件。如果文件夾/文件屬於用於運行Web服務器的同一用戶,則755就足夠了。

直接寫入public_html目錄是一個巨大的安全風險。我建議創建一個子目錄(可能是public_html以外的最佳文件夾),並給它適當的權限/所有權。

讓運行apache的用戶所擁有的文件夾比較安全 - 或者通常是類似apache或www的數據,而不是授予世界寫入權限。

+0

我會將其移動。這個用戶訪問的東西,可以在.htaccess或php.ini中設置嗎? – detailCode 2013-02-19 22:43:29

+1

不,其* nix所有權/權限 - 您需要使用chown(用於更改所有者)和chmod(用於權限)在命令行/ ftp上執行的操作。如果您無法更改所有者,則將權限設置爲寬容可能是我們唯一的選擇,但將其限制爲獨立文件夾可最大限度地降低您的風險。 – 2013-02-19 22:46:02