2011-04-18 25 views
7

我有一個PHP腳本,正在接受所有電子郵件(通配符)我的域名,並在將數據插入到MySQL。傳入電子郵件PHP:需要寫入附件網站目錄

腳本的開始有這樣一行:

#!/usr/bin/php -q 

那麼它看起來像一個普通的PHP腳本。將附件寫入磁盤的部分似乎可行,但存儲它們的新文件夾的權限是由'nobody'用戶創建的。

如何編輯權限,以便以後將這些文件寫入磁盤,它們可以通過服務器/網絡服務器用戶訪問?

感謝您的幫助!

(Fedora 14的Linux服務器,後綴)

+2

我很想看到#後'腳本!在/ usr/bin中/ PHP -q' ...你如何閱讀電子郵件附件,並保存? – Rudie 2011-04-20 13:07:15

回答

2

您可以通過FTP瓶坯您的文件系統的操作,所以你將有相同的權限用戶。 更好,然後讓服務器上的所有PHP用戶訪問您的文件。 http://php.net/ftp

+0

我有從電子郵件標題中解析出來的字符串中的base64編碼文件附件數據。如果我實際上沒有源文件傳輸,我可以使用PHP的FTP函數上傳文件嗎? – grandcameo 2011-04-18 13:58:20

+0

謝謝,我使用了FTP功能並繞過它! – grandcameo 2011-04-18 16:09:55

0

什麼用戶運行PHP的? PHP確實有chmod函數,但是不能提升比用戶PHP運行的權限更高的權限。

如果不這樣做的伎倆,你能不能執行chown附件目錄中的任何用戶PHP運行所擁有?

+0

PHP以'nobody'運行,我不認爲它完全使用Apache。我嘗試將PHP('nobody')添加到有權寫入和從該文件夾讀取的組中,但它不起作用。 – grandcameo 2011-04-18 13:53:56

0

我建議你做到以下幾點:

喬敦 - R的阿帕奇:阿帕奇目錄名

這是因爲PHP運行作爲Web服務器用戶(我相信這是在Fedora 阿帕奇 )。否則,如果您使用的是不同的Web服務器,然後更改文件到Web服務器的用戶的所有權(你一定在某個地方找到這個服務器的配置文件)。

+0

我不認爲Apache正在用來運行這個腳本......所有發往我的域的電子郵件像往常一樣進入我的服務器,它調用PHP腳本。所有的數據都被記錄到MySQL和文件寫入到Web服務器(nginx的靜態文件)可以開始從提供文件服務,除了服務器沒有權限的目錄。 – grandcameo 2011-04-18 13:56:34

+0

在這種情況下,您需要這樣做: chown -R nginx:nginx directory_name – 2011-04-20 13:11:33