2015-01-09 43 views
2

我有一個腳本允許將文件分配給產品。爲避免名稱文件重複出現問題,每個產品都有一個特定的目錄。PHP - Apache無法寫入剛剛創建的目錄

包含所有產品特定目錄的uplad directoy看起來像這樣。

4 drwxrwx - x 3 pepe pepe 4096 Jan 9 17:08。
20 drwxrwxr-×35佩佩佩佩20480 01月09日15時42 ..
4 drwxrwxr-×2阿帕奇阿帕奇4096 1月9日17時08分001

Apache下用戶 「阿帕奇」 和 「Apache」 運行設置作爲「pepe」組的一部分。

如果我嘗試將文件上載到沒有創建目錄的產品,則腳本將創建目錄(具有爲dir「001」顯示的權限),然後嘗試上載文件但失敗。

如果我在SSH中將目錄所有者更改爲pepe.pepe,然後重新上傳該文件,它將完美無缺。

爲什麼apache創建一個在下一行代碼中無法寫入的目錄?

如何避免必須手動將所有權更改爲所創建的目錄,因爲當將文件分配給他的所有產品時,我的客戶顯然無法做到這一點。

+0

確定Apache是​​做寫作?你的腳本文件使用什麼語言?... – War10ck 2015-01-09 20:38:17

+0

嘗試mkdir('path/to/dir',0700)該模式似乎對我最有效。哦,並確保創建目錄的腳本是由apache擁有:apache而不是pepe:pepe – rwhite35 2015-01-09 20:44:17

+0

@ war10ck腳本在PHP – 2015-01-09 21:02:23

回答

0

你可以在你的PHP中嘗試chgrp()來將組更改爲「pepe」嗎?如果它不起作用,至少這些錯誤會給你一個提示。另一條來自「安全模式」:

當啓用安全模式時,PHP檢查是否文件或目錄被 時有相同的UID(所有者)是 正在執行的腳本運行。

我會嘗試更改(手動)父目錄的擁有組以「apache」。

+0

這工作完美..我已經試過chown()但返回一個禁止所以我認爲chgrp()將返回相同,但顯然不是。 – 2015-01-09 21:24:26

0

你應該改變權限剛創建的目錄:

chmod('/path/to/directory', 0775); 
相關問題