我在Ubuntu服务器上有一个rails应用程序。 在我的Apacheconfiguration中,我已经将用户和组设置为www-data。 我想要我的Rails应用程序写入文件。 我已经设置了文件权限,如下所示:
-rw-rw-r-- 1 www-data www-data 0 Jun 5 22:35 notify_list.txt
好像rails应该可以写,因为权限是正确的。 但我一直拒绝许可。 这有什么可能的原因?
谢谢!
你是否使用mod_rails / passenger在Apache下运行你的Rails应用程序?
您可能需要设置乘客使用“PassengerDefaultUser”运行Rails应用程序。 既然你提到www数据,我假设一个Ubuntu或者debian服务器,所以这可能是/ etc / apache2 / sites-available中的一个独立的虚拟主机文件。 添加行:
PassengerDefaultUser www-data
到正确的虚拟主机文件。 如果您不知道哪个文件,请运行“ sudo apache2 -S ”以显示configuration中的可用虚拟主机,并select与访问Rails应用的主机名相匹配的文件。
看看你是否可以得到它来创build一个新的文件(比如在/ tmp中),看看它创build的用户/组。
第一个想法:你有目录的写权限?
此外,根据apacheconfiguration,您可能无法访问文档树之外的文件,因此,如果您将应用程序置于/ var / www / htdocs中,则无法访问此目录之外的文件。
对不起,问明显,但…你在Apache运行轨? 因为如果你在Mongrel或类似的地方运行rails,你需要让Mongrel运行为www-data。
可能发生该文件具有不可变的属性集。
在terminal窗口中运行'ps aux'来查看你的Rails应用程序正在运行的用户。
手动尝试:成为该用户( sudo su - www-data )并尝试在shell中创build该文件。