2012-01-28 98 views
0

如果我正在運行fastCGI,我是否會遇到使用open_basedir將文件從一個域中的文件移動到另一個域的問題?帶有FastCGI的PHP open_basedir

我會想從移動上傳的文件:

/var/www/vhosts/example-1.com/httpdocs/ 

到:

/var/www/vhosts/example-2.com/httpdocs/ 

威爾的FastCGI允許這種假定用戶將具體到正在使用的域名?因此,對於example-1.com,用戶將是example-1。如果我定義了open_basedir指令,該用戶是否可以將文件移動到example-2目錄?

+0

每個域(example-1.com,example-2.com等)都由不同的用戶擁有,並且您是否使用類似suEXEC的方法讓fastcgi以擁有用戶的身份運行腳本? – drew010 2012-01-28 20:11:05

+0

我不知道帽子suExec是如此不確定。是的,我爲每個域名目錄擁有不同的用戶 – 2012-01-28 20:17:30

回答

2

聽起來不像suEXEC正在使用中,所以FastCGI很可能像Web服務器運行的同一個用戶那樣運行(apache,nobody,daemon,lighttpd等)。

在這種情況下,FastCGI用戶將無權創建和寫入各種用戶目錄中的文件。如果您在其中一個虛擬主機的「上傳」文件夾中將權限設置爲777,則可以將文件保存在那裏。需要注意的是,這些文件將由網絡服務器用戶(apache等)擁有,現在,vhost用戶將不擁有這些文件,並且不能修改它們。無論open_basedir如何,都是如此。如果這是您的專用服務器,並且您的所有虛擬主機都是您的,那麼您可以在某些文件/文件夾上將所有權更改爲網絡服務器的所有權,但使用suEXEC將是首選,因爲在這種情況下,FastCGI會使用vhosts用戶作爲所有者。

將文件複製到另一個虛擬主機時,您仍然有權限問題,因爲它們將由不同的用戶擁有,但您可以讓腳本將它們作爲可能性發送給目標用戶,或將所有用戶添加到公共組,因此他們可以擁有組讀/寫權限。

suExec是一個更安全的選項,但設置正確可能會很複雜。你使用的是Apache,lighttpd還是其他的?

+0

我使用apache,而不是lighttpd。每個域用戶對該域都是唯一的,這些用戶是否與每個域的虛擬主機用戶相同?爲了我的記憶,我認爲他們是。這是我的專用虛擬服務器,所以如果需要,我可以更改權限,但由於上傳目錄可能會更改,所以我不想繼續這樣做。 – 2012-01-28 21:45:15