Rails 3.1 Passenger on Apache Development环境 当我去获取路线的索引(即GET)时,我得到:
Errno::EACCES in Crb_agendas#index
Showing /var/www/crbagenda/app/views/layouts/application.html.erb where line #5 raised:
Permission denied - /var/www/crbagenda/tmp/cache/assets/E2C
Extracted source (around line #5):
2: <html>
3: <head>
4: <title>CrbAgendas</title>
5: <%= stylesheet_link_tag "application" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
Rails.root: /var/www/crbagenda
当我进入提到的路径(/ var / www / crbagenda / tmp / cache / assets / E2C)时,没有E2C文件夹和root(运行的是什么apache)拥有资产目录...不确定是什么我在这里做错了......或者我还能展示什么来帮助。
答案 0 :(得分:17)
更新:是的,这个答案来自无知,然后似乎获得了牵引力。无论如何,真正的答案可以在Austen Tomek's answer
中找到通过在tmp目录上执行chmod 777来解决这个问题,所以我猜测这是我对用户/权限设置的无知。
答案 1 :(得分:15)
我在遇到此错误时找到此帖子,并且此处运行chmod 777
您需要对如何启用组权限和适当配置apach设置进行一些研究。这是一个Stack Exchange线程,它详细说明了这一点,并包含有用的链接。确保apache具有对相应目录的读取,写入和执行访问权限,但不要让任何人修改目录。找到您的系统apache组并运行chown
和chmod -g+[What permissions apache needs goes here]
我建议不要使用-R
选项运行它,并主动查看apache对特定目录所需的权限。 Link to Stack Exchange thread regarding apache permissions and permissions in general
答案 2 :(得分:12)
我完全删除了tmp文件夹,这对我有用。它只是由Web服务器重新生成。
答案 3 :(得分:5)
对我来说这很有用:
sudo chown -R username app_path
答案 4 :(得分:4)
只需在项目文件夹
上运行chownchown -R www-data /var/www/
答案 5 :(得分:1)
我使用windows vs code和ubuntu子系统作为终端。
我不得不将我的项目文件夹从ubuntu子系统区域移动到windows区域。
所以每次我用ubuntu运行东西我都要打字
cd /mnt/c/projects/my_app
它似乎允许应用程序运行,并且db / server的内容可以正常运行..
里斯
答案 6 :(得分:0)
感谢上面的帖子,我也解决了自己的问题。就个人而言,一个重要的文件夹被标记为&#34; Hidden&#34; (按照ERROR路径错误:权限被拒绝 - ... / _ netrc(Errno :: EACCES)一旦我右键单击并将其文件夹选项设置为NOT HIDDEN,那么一切正常!
答案 7 :(得分:0)
在Windows上,以管理员身份打开cmd并执行gem install "lib"
命令
答案 8 :(得分:0)
在Ubuntu 20.04中使用Rails 6应用程序时,我遇到了同样的问题。
每次我运行命令rails assets:clobber
完全删除public/assets
中的旧资产时,都会收到错误消息:
errno :: enotempty:目录不为空@ dir_s_rmdir
errno :: eacces:权限被拒绝@ apply2files
日志将指向导致该文件的文件的路径,在我的情况下,该文件就是public/packs/manifest.json
文件。
我尝试删除它或更改权限,但是没有任何效果。我还尝试了删除项目中的tmp
目录,但没有成功。
这是我修复的方式:
我使用ls -lh
命令列出了该目录中的所有文件和目录,这给了我以下输出:
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct 6 20:29 404.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct 6 20:29 422.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.6K Oct 6 20:29 500.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 0 Oct 6 20:29 apple-touch-icon.png
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 0 Oct 6 20:29 apple-touch-icon-precomposed.png
drwxr-xr-x 3 promisechukwuenyem promisechukwuenyem 4.0K Oct 13 09:20 armstrong_tools
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 0 Oct 6 20:29 favicon.ico
drwxr-xr-x 3 root root 4.0K Oct 8 13:06 packs
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 99 Oct 6 20:29 robots.txt
我意识到packs
目录拥有root
所有权,这与允许其他文件和目录是分开的:
drwxr-xr-x 3 root root 4.0K Oct 8 13:06 packs
我只需运行以下命令即可将所有权从root更改为promisechukwuenyem:
sudo chown -R promisechukwuenyem:promisechukwuenyem packs/
现在,当我运行命令rails assets:clobber
来完全删除public/assets
中的旧资产时,它工作正常。
仅此而已。
我希望这会有所帮助
答案 9 :(得分:-1)
在我的情况下,更改权利或目录的所有权并没有帮助( 必要)。原来是Selinux踢了(默认情况下在Fedora中启用)并且禁用是治愈:
$ sudo setenforce 0
要使更改永久化,必须更改/etc/selinux/config
文件中的设置:
SELINUX=disabled