我在 Ubuntu 服务器上有一个 rails 应用程序。在我的 Apache 配置中,我将用户和组设置为 www-data。我希望我的 rails 应用程序写入文件。我已将文件权限设置如下:
-rw-rw-r-- 1 www-data www-data 0 Jun 5 22:35 notify_list.txt
似乎rails应该能够写入,因为权限是正确的。但我不断获得许可被拒绝。这可能是什么原因?
谢谢!
我在 Ubuntu 服务器上有一个 rails 应用程序。在我的 Apache 配置中,我将用户和组设置为 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-data,我假设是一个 ubuntu 或 debian 服务器,所以这可能是 /etc/apache2/sites-available 中的一个单独的 vhost 文件。添加行:
到正确的虚拟主机文件。如果您不知道哪个文件,请运行“
sudo apache2 -S
”以显示配置中可用的虚拟主机并选择与您访问 Rails 应用程序的主机名匹配的文件。看看你是否可以让它创建一个新文件(比如在 /tmp 中),看看它是用什么用户/组创建的。
第一个想法:你有目录的写权限吗?
此外,根据 apache 配置,您可能无法访问文档树之外的文件,因此如果您的应用程序位于 /var/www/htdocs 中,您将无法访问此目录之外的文件。
很抱歉问这个显而易见的问题,但是......你在 Apache 中运行 rails 吗?因为如果你在 Mongrel 或类似的环境中运行 rails,你需要让 Mongrel 作为 www-data 运行。
可能会发生文件具有不可变属性集的情况。
在终端窗口中运行“ps aux”以查看您的 rails 应用程序正在以哪个用户身份运行。
手动尝试:成为该用户 (
sudo su - www-data
) 并尝试在 shell 中创建文件。