Каждый раз, когда я запускаю composer (например, sudo composer install, sudo composer self-update
и т. Д.), Мне нужно запускать это с помощью sudo, поскольку владельцем файла является root.
Однако каждый раз, когда я использую composer с sudo root, он владеет папкой vendor, а затем мне приходится менять владельца этой папки / привилегий с root на www-data.
Каков наилучший способ исправить это, чтобы мне не приходилось запускать sudo каждый раз?
Сменить владельца /usr/local/bin/composer
с root на www-данные?
Это идеальный способ справиться с этим, чтобы избежать необходимости менять владельца и назначать разрешение каждый раз, когда я использую sudo composer install
?
Изменить:
разрешения для композитора в настоящее время -rwxr-xr-x
. И я попытался переключить владельца /usr/local/bin/composer
на www-data:www-data
с разрешениями, установленными на 775, и все же я не могу запустить композитор без запуска sudo
.
composer self-update
без использования sudo. Нужно ли использовать 775?composer update
и это также не работает с этими разрешениями. Я все еще должен сначала использовать sudo. Это ошибка, которую я получаюfile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
chown -R lamp:lamp /home/lamp/.composer
)Я занимался этим вопросом уже несколько недель.
Я думаю, что решение состоит в том, чтобы запустить самообновление композитора с -H
Перед этим обязательно удалите каталоги .composer в корневом каталоге и домашний каталог пользователя, которого вы хотите запустить composer.
Запуск самообновления sudo composer без флага -H создаст ~ / .composer, которым владеет root, и предотвратит ошибки других команд composer.
По моему мнению, вызов самообновления sudo composer не должен создавать файлы, принадлежащие пользователю root, в домашнем каталоге текущего пользователя.
Обратите внимание, что если вы будете следовать этим инструкциям на Ubuntu 14.04, композитор поместит кеш в:
Скорее, чем:
Это происходит из-за переменной среды XDG_RUNTIME_DIR, определенной в Ubuntu 14.04, но, похоже, не определенной в Ubuntu 12.04
Связанное обсуждение здесь
источник
$ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
~/.composer
похоже, простое удаление папки решило проблему.