上傳文件的寫入權限 - Linux、Apache、PHP
我正在研究一個使用 FTP 函式傳輸文件的 PHP 腳本。它一直在我的生產伺服器(這是一個託管服務)上工作。我剛剛設置的開發伺服器(我是伺服器新手)是 Debian Lenny,帶有 Apache2、PHP5 和 MySQL5。
文件傳輸正常,但是一旦文件被寫入伺服器,它的權限為 600。這使我無法在 Web 瀏覽器中查看文件 (JPEG),因為權限被拒絕。我搜尋了網際網路,甚至破壞了我的伺服器安裝並重新安裝它試圖解決這個問題(儘管如此,這很有趣!)。
我知道
777
對公共可訪問文件設置權限是不明智的,但即使這樣也不能解決問題。唯一有效的是,如果我chmod 777 thefile.jpg
在它被轉移之後,這不是一個有效的解決方案。我嘗試將我的站點文件的所有者更改為
www-data
per this post,但這也不起作用。我的使用者是,無論文件的所有者是還是
mike
,它仍然不起作用。mike``root
有人會指出我正確的方向嗎?謝謝!當然,如果我能澄清任何事情,請告訴我。
這與您的 ftp 伺服器配置更相關,與 apache 無關。您使用哪個伺服器進行 ftp?我相信 vsftpd 是 Debian Lenny 的預設 ftp 伺服器,您可能需要在
vsftpd.conf
文件中查看的選項是:chown_upload_mode
和file_open_mode
預設設置
chown_upload_mode
是0600
讓我認為這可能是您需要設置的,然後重新啟動您的 FTPd 並重試。
聽起來 Apache 未配置為從文件保存到的目錄中提供文件。您需要確保 Apache 配置中有一個Directory指令,該指令允許訪問文件所在的目錄。例如:
<Directory "/home/mike/uploads"> Order allow,deny Allow from all </Directory>
此外,www-data 使用者需要具有遍歷指向該目錄的目錄樹的權限。例如,如果文件位於
/home/mike/uploads
,home
並且mike
必須uploads
允許其他使用者執行權限。