Web 应用无法写入我的服务器上似乎具有正确权限的文件

Web 应用无法写入我的服务器上似乎具有正确权限的文件

我在 Ubuntu 服务器上有一个 rails 应用程序。在我的 Apache 配置中,我已将用户和组设置为 www-data。我希望我的 rails 应用程序写入文件。我已将文件权限设置如下:

-rw-rw-r--  1 www-data www-data    0 Jun  5 22:35 notify_list.txt

似乎 rails 应该能够写入,因为权限正确。但我一直收到权限被拒绝的消息。这可能是什么原因造成的?

谢谢!

答案1

您是否通过 mod_rails/ 在 Apache 下运行 Rails 应用程序乘客

您可能需要使用“PassengerDefaultUser”设置乘客运行 Rails 应用程序的用户。由于您提到了 www-data,我假设使用的是 ubuntu 或 debian 服务器,因此这可能是 /etc/apache2/sites-available 中的一个单独的 vhost 文件。添加以下行:

PassengerDefaultUser www-data

到正确的 vhost 文件。如果您不知道哪个文件,请运行“ sudo apache2 -S”以显示配置中可用的 vhost,并选择与您访问 Rails 应用程序的主机名匹配的文件。

答案2

看看是否可以让它创建一个新文件(比如在 /tmp 中)并查看它使用哪个用户/组创建该文件。

答案3

第一个想法:您是否具有该目录的写权限?

此外,根据 apache 配置,您可能无法访问文档树之外的文件,因此,如果您的应用程序位于 /var/www/htdocs 中,您将无法访问该目录之外的文件。

答案4

可能会发生文件具有不可变的属性设置的情况。

相关内容