我刚刚使用Ruby 1.9.2部署了一个Rails 3应用程序。我遇到了一些错误。
application.css
未编译。所以我将production.rb
中的预编译设置为false; cannot generate tempfile
,所以我做了rake tmp:clear
; ActionView::Template::Error (Permission denied - /srv/www/appname/tmp/cache/assets):
而我无法解决这个问题。请帮忙。
答案 0 :(得分:37)
如果运行您的网络服务器的user:group
是http:http
并且它正在* nix上运行,请执行以下操作:
sudo chown -R http:http /srv/www/appname/
另外,愚蠢的问题,但/ tmp / cache / assets是否存在?
如果是这样,正如@leonel指出的那样,您可能还需要更改权限:
chmod 777 /srv/www/appname/tmp/cache
小心设置777
权限。只有这样做才能验证权限问题,然后重置为必要的最小权限。
答案 1 :(得分:6)
很可能你是在apache乘客下运行你的应用程序。
您必须将config / environment.rb的所有者更改为对您的应用文件夹具有权限的人。
chown -R www-data:www-data /path/to/app
答案 2 :(得分:4)
使项目的tmp文件夹可写:
chown -R group:user /path/to/rails/app/tmp
chmod -R 777 /path/to/rails/app/tmp
在您的控制台中,运行rake tmp:cache:clear
重新启动您的应用程序。
答案 3 :(得分:2)
您现在可能没有使用运行服务器的用户创建Rails应用程序。您可以粘贴ls -alh /srv/www/appname/tmp/cache/assets
的输出并告诉我们运行网络服务器的用户吗?
答案 4 :(得分:1)
我最近遇到了这个错误。 Apache无法写入tmp目录
无法生成tempfile
/tmp/RackRewindableInput2xxxxxxxxxxxxxxxxx' /app-lib/lib/ruby/1.8/tempfile.rb:52:in
初始化” app-dir / vendor / gems / rack-1.0.1 / lib / rack / rewindable_input.rb:73:innew' app-dir/vendor/gems/rack-1.0.1/lib/rack/rewindable_input.rb:73:in
make_rewindable' app-dir / vendor / gems / rack-1.0.1 / lib / rack / rewindable_input.rb:26:inread' app-dir/vendor/gems/rack-1.0.1/lib/rack/request.rb:134:in
POST'
我检查了tmp目录的权限,并且它有权向所有组写入它。 我更改了tmp目录的所有者,但它也没有解决错误。
罪魁祸首是tmp目录中填充了太多的大文件,看起来像某种程度上apache没有足够的空间来编写这个新文件。 清除所有临时文件和旧文件。它解决了这个问题。
答案 5 :(得分:1)
现在我们这些正在使用Windows的人 - 如果您是管理员并且看到此错误
ActionView::Template::Error (Permission denied @ utime_failed) C:/User/..../tmp/cache/assets/sprochets/v3.0/E5/E5PZx-mq8.cache
然后是Windows上的“权限和所有权”设置问题。 您可以转到应用程序上的tmp文件夹,并授予自己(用户)对文件夹上的**读取,写入和执行**的权限。 单击[此处] [1]以查看如何授予权限。
快速修复。打开终端并以管理员身份运行以下命令
takeown /f <location of your app tmp folder> /r /d y
然后重新启动服务器。
答案 6 :(得分:1)
我们需要授予访问系统root用户所需目录的权限
sudo chmod 777 -R your_project_directory_to_be_access
在您的情况下,您可以使用:
sudo chmod 777 -R /srv/www/appname/tmp/
出于安全考虑,请记住:
chmod 777
赋予每个人阅读,写作和执行权利,这对于大多数问题来说确实太过分了。
答案 7 :(得分:0)
我认为一个更好的解决方案是不授予所有人对tmp文件夹的管理权限,就像这样:
sudo rake tmp:cache:clear
这将清除temp文件夹,并且当您再次运行rails server
时不会出错。
答案 8 :(得分:-1)
在我的localhost中它给出了这个错误,命令chmod 777 C:/Sites/project_name/tmp/cache/
解决了我的问题。
答案 9 :(得分:-2)
很可能您已授予应用程序的主文件夹读取和执行模式的权限。但是,为了从您的应用生成新文件,您还需要授予所需文件夹的写入权限。例如:yUML使用tmp文件夹生成文件。我给了tmp文件夹写权限:
chmod -R 777 / usr / share / nginx / html / yuml_product / tmp
解决了我的问题。