Разрешение отклонено в tmp
Я только что развернул приложение Rails 3 с Ruby 1.9.2. Я получаю несколько ошибок.
-
application.css
не был скомпилирован. поэтому я устанавливаю предварительную компиляцию в production.rb
на false;
- Тогда я получил:
cannot generate tempfile
, поэтому я сделал rake tmp:clear
;
- И теперь я получаю
ActionView::Template::Error (Permission denied - /srv/www/appname/tmp/cache/assets):
, и я не смог исправить это.
Пожалуйста, помогите.
Ответы
Ответ 1
Если 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
на что угодно. Только сделайте это, чтобы проверить проблему с разрешениями, а затем reset до минимально необходимых разрешений.
Ответ 2
Скорее всего, вы запускаете приложение под Apache Пассажир.
Вы должны сменить владельца config/environment.rb на кого-то, у кого есть права доступа к папке вашего приложения.
chown -R www-data:www-data /path/to/app
Ответ 3
-
Сделайте папку tmp для вашего проекта доступной для записи:
chown -R group:user /path/to/rails/app/tmp
chmod -R 777 /path/to/rails/app/tmp
-
В вашей консоли запустите rake tmp:cache:clear
-
Перезагрузите приложение.
Ответ 4
Вероятно, вы не создали свое приложение Rails с пользователем, на котором запущен сервер. Можете ли вы вставить вывод ls -alh /srv/www/appname/tmp/cache/assets
и сообщить нам пользователя, на котором запущен веб-сервер?
Ответ 5
Недавно я столкнулся с этой ошибкой. 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: in new'
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: in read'
app-dir/vendor/gems/rack-1.0.1/lib/rack/request.rb:134:in
POST '
Я проверил разрешение tmp-каталога и получил разрешение всем группам писать на него.
Я изменил владельца каталога tmp, и он также не разрешил ошибку.
Преступник был tmp-каталогом, заполненным слишком большим количеством больших файлов, и выглядит как-то apache не хватило места для записи этого нового файла.
Удалены все временные и старые файлы. Это разобрало эту проблему.
Ответ 6
Теперь для тех из нас, которые используют окна
- Если вы являетесь администратором и видите эту ошибку
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
Затем перезагрузите сервер.
Ответ 7
Нам необходимо предоставить разрешения для доступа к нужному каталогу для пользователя root системы.
sudo chmod 777 -R your_project_directory_to_be_access
В вашем случае вы можете использовать:
sudo chmod 777 -R /srv/www/appname/tmp/
Из соображений безопасности просто помните:
chmod 777
дает всем права на чтение, запись и выполнение, что для большинства проблем явно слишком много.
Ответ 8
В моем локальном хосте он дал эту ошибку, и команда chmod 777 C:/Sites/project_name/tmp/cache/
решила мою проблему.
Ответ 9
Скорее всего, вы дали разрешение на доступ к основной папке вашего приложения для чтения и выполнения. Однако для создания новых файлов из вашего приложения вам также необходимо предоставить разрешение на запись для требуемой папки. Например: yUML использует tmp-папку для генерации файлов. Я дал разрешение на запись в папку tmp:
chmod -R 777/usr/share/nginx/html/yuml_product/tmp
решил мою проблему.