我正在 Ubuntu 服务器上运行我的 Rails 应用程序。磁盘上文件的结构是这样的:
/home
/dokku/my-rails-app
/text-files/txt/my-file.txt
在
/home/dokku/my-rails-app
中是我的 Rails 应用程序,我想在此应用程序中打开 /home/text-files/txt/my-file.txt
文件。
在我的 Rails 应用程序的视图中,我这样做:
<%= File.read("/home/text-files/txt/my-file.txt") %>
它生成了错误ActionView::Template::Error(没有这样的文件或目录@ rb_sysopen - /home/text-files/txt/my-file.txt):
但是,如果我在开发环境(OSX)中执行相同的方法,它就会起作用并且文件会正确显示。
我还仔细检查了 Ubuntu 上文件的路径是否正确,并且确实如此 - 如果我通过 SSH 连接到终端并运行
cat /home/text-files/txt/my-file.txt
,我会获取文件的内容。
我是否忽略了阻止 Rails 应用程序显示文件内容的某些因素?
您是否检查过您的 Rails 应用程序是否具有该文件的读取权限。您可以通过运行来更改文件的权限:
$ sudo chmod 644 /home/text-files/txt/my-file.txt
文件所有权也值得检查。如果您需要更新它,您可以使用:
sudo chown www-data:www-data /home/text-files/txt/my-file.txt
检查
/var/log/audit/audit.log
如果您有 SELinux 或 AppArmor。访问可能受到限制。