При установке Laravel у меня возникла ошибка: "./composer.json не доступен для записи".

это команда, которую я запускаю

composer global require "laravel/installer"

и это текст и ошибка, которые я получил после этого:

Changed current directory to /home/dimitar/.composer
./composer.json is not writable.

Я запускаю Ubuntu 16.04 LTS и PHP 7 и Composer версии 1.3.0 и запускаю эту команду из своей домашней папки.

Ответ 1

Проверьте владельца composer.json.

ls -lh ~/.composer/composer.json

Если это "root", запустите:

sudo chown -R yourusername:yourusername ~/.composer/composer.json

Находясь в папке .composer, проверьте владельца папки "cache". Если это "root", повторите команду выше, но переключите composer.json в кеш. В противном случае вы можете получить предупреждение "Невозможно создать каталог кэша".

Ответ 2

Ошибка говорит об этом, есть проблема с разрешениями. Я думаю, что самый простой способ исправить это - это выполнить следующую команду:

sudo chmod -R 775 /home/dimitar

Ответ 3

Я думаю, что этот код отсутствует в вашем файле композитора, который не позволяет Packagist найти пакет Laravel.

Поместите это в свой composer.json файл и повторите попытку:

"repositories": {
    "packagist": { "url": "https://packagist.org", "type": "composer" }
 }

Ответ 4

Проверьте владельца composer.json.

ls -lh /home/<yourusername>/composer.json

Если это "root", запустите:

sudo chown -R yourusername:yourusername /home/<yourusername>/.composer/composer.json

Находясь в папке .composer, проверьте владельца папки "cache". Если это root, повторите команду выше, но переключите composer.json в кеш. В противном случае вы можете получить предупреждение "Невозможно создать каталог кэша".

Ответ 5

sudo composer global package_name

Пример:

sudo composer global require "laravel/installer"

ваш пароль

ввести

Ответ 6

Вы можете запускать с привилегией sudo без разрешения папки смены, поскольку вы устанавливаете ее в глобальную.