2010-02-14 115 views
3

我想在fedora上啓動apache的PHP站點,並且我有關於寫入權限的問題。它看起來像apache沒有寫入權限的一些文件夾,但我不明白爲什麼。Apache + PHP在unix上的寫入權限

我檢查了httpd.conf,它有組:apache,user:apache。 然後我提出: CHOWN -R阿帕奇:apache的www和設置777次的權限的文件夾,但它仍然表示:

警告:file_put_contents(/var/www/public/temp.txt)功能。 file-put-contents]:未能打開流:第8行的/var/www/public/newtest.php中的權限被拒絕

請指教。

更新: 順便說一句,如果我從命令行製作「php newtest.php」,文件temp.txt是由組root和root用戶創建的。它只是不適合瀏覽器。

+1

怎麼樣的文件'temp.txt'的權限? – 2010-02-14 19:03:16

+0

temp.txt是我想要創建的一個新文件,它現在還不存在 – 2010-02-14 19:35:02

回答

3

警告:file_put_contents(/var/www/public/temp.txt)[function.file-put-contents]:未能打開流:在/var/www/public/newtest.php上的權限被拒絕第8行

這裏有太多不好的東西。

讓我們從真正想要保持httpd可寫文件遠離代碼的事實開始吧 - 當然是在一個單獨的目錄中,最好在文檔根目錄之外。

喬敦 - R的阿帕奇:阿帕奇WWW和設置777級權限的文件夾

而且你檢查以後的權限實際上是?順便說一句,請參閱上面的問題 - 如果您已將整個網站設置爲可由所有人寫入,那麼您只是在尋求麻煩。你肯定不會改變主人和權限。

您是否啓用了SELinux? (以root身份運行sestatus)。如果是這樣,那麼你需要禁用它或者學習如何配置它 - 但是我建議你先去處理老式的權限,然後禁用SELinux。

C.

+0

好吧,我知道777不是存儲文件的方式,但爲了解決問題,我必須嘗試一切。我現在禁用了SELinux。 sestatus根目前顯示「SELinux狀態:禁用」,但問題仍然存在:(任何想法? – 2010-02-15 19:56:16

+0

啊不,實際上它幫助,只是在這裏有根權限的舊文件。 – 2010-02-15 20:08:03

0

化妝搭配chmod 775 newtest.php;)

+0

正如我已經提到的,我對整個文件夾(當然包括newtest.php)做了777個。 temp.txt是我想創建的一個新文件,它現在還不存在。 – 2010-02-14 19:34:40

0

LS -la在/ var/WWW /公共

只是爲了檢查:-)

+0

好了,文件夾本身具有這樣的: drwxrwxrwx 8阿帕奇阿帕奇4096 2010-02-13 04:08公衆 文件我執行: -rwxrwxrwx 1阿帕奇阿帕奇213 2010-02-14 06:34 newtest。 php – 2010-02-14 20:42:53

+0

奇怪。你確定temp.txt不在嗎? 另外,如果您嘗試「sudo -u apache echo test> /var/www/public/temp.txt」會發生什麼? – Qwerty 2010-02-14 20:56:49

+0

是的,它不在那裏。當我啓動你建議的命令(在root下)時,它已經創建了它,但是當我再次嘗試我的PHP腳本時,即使文件存在,它仍然顯示相同的錯誤。我確定它與apache權限有關,但不知道究竟是什麼.. – 2010-02-14 21:11:51

0

你試圖去觸摸TEMP.TXT和公正更改file_put_contents()並添加FILE_APPEND標誌?

+0

任何文件操作都會給出許可權限錯誤,所以無論我做什麼:file_put_contents,fwrite,imagepng - 都會給出類似的錯誤。觸摸返回這個: 警告:touch()[function.touch]:Utime失敗:權限被拒絕在/var/www/public/newtest.php在第6行 – 2010-02-14 21:52:10

+0

我的意思是shell touch命令... – f13o 2010-02-14 22:56:18

+0

反正這不幫幫我。我需要能夠創建文件,而不僅僅是修改它。 – 2010-02-14 23:33:43

0

我建議將apache切換爲mod_itk作爲mpm,並使用所有者文檔根目錄的權限運行特定的vhost幷包含php腳本。

+0

這應該如何解決我的問題?我並不真的需要這裏的虛擬主機.. – 2010-02-14 22:25:25

+0

在Apache中至少有一個默認的虛擬主機通常配置。你可能想嘗試在那裏設置vhost所有者。但是你可能也想改進你的問題,因爲mod_itk在單個虛擬主機設置中是過度的,我不會那麼建議它。 ;-) – hurikhan77 2010-02-14 22:27:54