2010-09-01 81 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应用程序正在运行。