我遇到了使用xsendfile和我的Rails 3應用程序的問題。帶符號鏈接的mod_xsendfile
我正在使用capistrano管理部署,並且在每個版本中都有一個共享/資產目錄的符號鏈接(例如/ var/www/site/releases/1234/assets =>/var/www/site /共享/資產)。問題是XSendFile似乎沒有遵循符號鏈接。在我的Apache日誌,我看到下面的錯誤:
The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf
我已在XSendFilePath配置設置爲
XSendFilePath /var/www/site/shared/assets
如果我切換config來:
XSendFilePath /var/www/site/releases
那麼一切工作正常。所以我有幾個問題:
1)有沒有辦法使XSendFilePath遵循符號鏈接?
2)將XSendFilePath設置爲我的發行版目錄是否存在安全風險?換句話說,我是否可以打開所有目錄的訪問權限?
task :storage_link, :except => { :no_release => true } do
run "ln -nFs #{deploy_to}/shared/assets #{latest_release}/assets"
end
這使得XSendFilePath看到該鏈接爲/var/www/site/current/assets
這使它的根路徑內:
感謝您的回答。我已經從這個項目中走了出來,但你的答案肯定是有道理的。 – bostonou 2011-08-12 19:16:17
直到使用'Pathname#realdirpath'解析符號鏈接時,這對我們纔有用。 – 2013-05-03 21:33:10
它不適用於我,即使使用'路徑名#realdirpath' :( – wrzasa 2015-03-04 14:48:05