2010-09-01 83 views
1

我在通過XSendFile獲取apache文件時遇到了麻煩,因爲它在使用samba安裝的目錄中。如果在Windows samba上共享,XSendFile無法統計文件?

爲了給出一點背景:我有一個Ruby on Rails應用程序,它正在慢慢取代ASP.NET應用程序,並且使它運行在運行apache2和乘客的linux服務器上。運行ASP.NET代碼的Windows機器共享我通過Samba掛載的上傳目錄。

每當我嘗試使用X_SENDFILE頭我在Apache服務器日誌中獲取該按鈕,發送文件:

部分結果是有效的,但處理不完整:xsendfile:無法統計文件:/路徑/到/文件

但是當我手動輸入:stat/path/to/file它會給我文件統計。我知道該文件在那裏。 (我在用戶apache運行時也登錄後也嘗試過)根據我可以判斷的文件權限是正確的。

apache的XSendFile和SMB共享文件存在某種問題嗎?

回答

1

也許文件/權限問題(作爲用戶x,你不能訪問y)。你可以嘗試在它上面做一個chmod a + rwx ...

1

我跟蹤了它。有時候,只要有人指出最明顯的一點!

我將samba共享安裝在/ mnt/winbox-uploads 上面安裝了:dir_mode = 0777,file_mode = 0777(用於測試),所以我認爲權限是開放的。但是,在檢查/ mnt/winbox-uploads目錄上的權限後,我看到它們是:drwxrwx ---。這基本上意味着,如果我不是所有者或小組,我甚至不能進入目錄。

這個問題還沒有解決。請參閱以下注意事項

+0

好吧,錯誤報警。它只能工作,因爲我已經卸載了桑巴共享。它仍然不適用於通過samba安裝的目錄。 – demersus 2010-09-08 16:15:23

+0

作爲對eriko的迴應:我曾嘗試將這些文件複製到我的Linux機器上。它效果很好。不幸的是,這不是一個好的選擇,因爲有一箇舊的ASP.NET應用程序也需要訪問這些文件。所以,我必須將它們存儲在Windows系統中.... GRR .... MS總是讓我頭疼 – demersus 2010-09-08 21:36:23

1

Samba裝載並沒有真正擁有與真正unix類似的文件系統相同的權限。請記住,samba主要是爲Unix系統設計的 - > windows客戶端不是windows服務器 - > unix客戶端。像chmod等命令不能很好地工作。

然後下一個問題是,紅寶石是非常不信任的文件系統。如果覺得訪問文件時感到有點不舒服,它會放棄。我有一些使用acls而不是unix文件權限的nfs共享運行的rails應用程序,除非我回過頭去爲tmp,日誌等設置用戶或組,否則它們將不會運行,因爲ruby甚至不會嘗試查看實際如果它沒有看到用戶/組權限,即使它會成功,因爲有acl's,所以可以訪問該文件。

對於一個答案嘗試克隆文件框中的rails應用程序正在運行。