Nie można utworzyć katalogu pamięci podręcznej ... lub katalog nie jest zapisywalny. Kontynuacja bez pamięci podręcznej w Laravel

127

Stworzyłem nowy projekt Laravel. Kiedy idę do terminala, aby zainstalować zależne gatunki, composerwyświetla się następujące ostrzeżenie:

Cannot create cache directory /home/w3cert/.composer/cache/repo/https---packagist.org/, or directory is not writable. Proceeding without cache.

Karthik
źródło
wygląda na to, że kompozytor nie ma uprawnień do zapisu w folderze /home/w3cert/.composer/cache/
Amir Bar
2
Może się to również zdarzyć, jeśli korzystasz sudo composer self-updatez systemu Linux, ponieważ ~/.composerkatalog będzie później własnością root.
krakaj

Odpowiedzi:

214

Zmień uprawnienia grupy do folderu

sudo chown -R w3cert /home/w3cert/.composer/cache/repo/https---packagist.org

a także folder Pliki

sudo chown -R w3cert /home/w3cert/.composer/cache/files/

Zakładam, że w3cert to Twoja nazwa użytkownika, jeśli nie, zmień 4. parametr na swoją nazwę użytkownika.

Jeśli problem nadal występuje, spróbuj

sudo chown -R w3cert /home/w3cert/.composer

Teraz jest szansa, że ​​nie będziesz w stanie utworzyć katalogu aplikacji, jeśli tak się stanie, zrób to samo z folderem html lub folderem, w którym próbujesz utworzyć projekt laravel.

Mam nadzieję że to pomoże.

Nesar
źródło
14
Spotkałem się z tym kilka razy, ale właśnie zdałem sobie sprawę, że może to być konsekwencją uruchomienia automatycznej aktualizacji jako root: automatyczna aktualizacja $ sudo composer, która mogła być przyczyną, dla której folder ~ / .composer i wszystko inne jego zawartość zmienia właściciela. Po prostu chown -R swój ~ / .composer z powrotem do siebie
andkrup
10
Jestem pewien, że ten problem zaczął się generować zaraz po tym, jak to zrobiłemsudo composer self-update
Pratik
4
BTW, chown zmienia właściciela, aby zmienić też grupę, musisz to zrobić w3cert:w3cert( [OWNER][:[GROUP]])
Pratik
Pomogło mi to w tworzeniu projektu. Po wykonaniu pierwszych dwóch poleceń wszystko poszło dobrze.
rahul
Poszedłem do .composer/katalogu i sudo chown $USER -R /cacheto pomogło.
saggzz
271

Po zainstalowaniu programu Composer na pewno użyłeś $ sudopolecenia z tego powodu~/.composer folder został utworzony przez roota.

Uruchom to, aby rozwiązać problem:

$ sudo chown -R $USER $HOME/.composer
Jim M.
źródło
54
Wymień $USERsię $USER:$USERustalić nie tylko użytkowników, ale także grupę folderu i jego zawartości.
krakaj
4

Daj pełny dostęp do .composer użytkownikowi.

sudo chown -R 'user-name' /home/'user-name'/.composer

lub

sudo chmod 777 -R /home/'user-name'/.composer

user-name to nazwa użytkownika systemu.

aby uzyskać nazwę użytkownika, wpisz „whoami” w terminalu:

wprowadź opis obrazu tutaj

Shrikant Pardhi
źródło
3

Miałem dzisiaj ten sam problem. Spróbuj!

sudo chown -R  [yourgroup]  /home/[youruser]/.composer/cache/repo/https---packagist.org/


sudo chown -R  [yourgroup]   /home/[youruser]/.composer/cache/files/

źródło
1

Użyj tego polecenia:

sudo chown -R $USER ~/.composer/
Oppa
źródło
1

Niedawno miałem podobny problem i musiałem zmienić uprawnienia folderu mojego dostawcy

Wykonując następujące polecenia:

  1. php artisan cache:clear
  2. chmod -R 777 storage vendor
  3. composer dump-autoload

Muszę przyznać wszystkie uprawnienia wymagane do otwierania i zapisywania plików dostawców, aby rozwiązać ten problem

Lokesh Ramchandani
źródło
0

Uruchom to polecenie:

    sudo chown -R yourUser /home/yourUser/.composer
RKAISSI Youssef
źródło