Estoy tratando de instalar Prestissimo en un servidor Ubuntu 16.04, pero eso genera un error:
$ composer global require "hirak/prestissimo:^0.3"
Changed current directory to /home/kramer65/.composer
[ErrorException]
file_put_contents(./composer.json): failed to open stream: Permission denied
require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...
He iniciado sesión como usuario kramer65
, por lo que no sabría por qué no puede escribir en mi carpeta de inicio. Mi reacción normal a a permission denied
es usar sudo
, pero el compositor siempre dice:
¡No ejecute Composer como root / superusuario! Consulte https://getcomposer.org/root para obtener más detalles
¿Alguna idea de cómo puedo solucionar esto?
composer.json
?~/.composer/composer.json
aún no hay archivo.~/.composer/
carpeta?kramer65
no tiene derecho a escribir, parece,chmod
podría ser útil.~/.composer/
es propiedad deroot
. Pero acabo de verificar algunos otros sistemas e instalé Composer en una nueva máquina virtual Ubuntu 16.04 nueva, y siempre es propiedad deroot
. Me puede, por supuestochmod
, ochown
ella, pero es una buena idea para cambiar este comportamiento por defecto?755
modo. Así que cambiar de propietario probablemente no sea la solución.Respuestas:
Tuve este problema para instalar laravel / lumen.
Se puede resolver con el siguiente comando:
fuente
~/.composer
Para resolver esto, debe abrir una ventana de terminal y escribir este comando:
sudo chown -R user ~/.composer
(user
siendo su usuario actual, en su caso,kramer65
)Una vez que haya ejecutado este comando, debe tener permiso para ejecutar su comando composer global require.
También es posible que deba eliminar el archivo .composer del directorio actual, para hacer esto, abra una ventana de terminal y escriba este comando:
sudo rm -rf .composer
fuente
En mi caso,
.composer
era propiedad de root, así que lo hicesudo rm -fr .composer
y luego funcionó mi requerimiento global.¡Tenga cuidado! No desea utilizar ese comando si no está seguro de lo que está haciendo.
fuente
También enfrenté este problema, pero en mi caso, estaba en el directorio incorrecto. Consulta el directorio en el que estás trabajando
fuente
En mi caso, no tengo problemas con
~/.composer
.Así que al estar dentro de la carpeta raíz de la aplicación Laravel, lo hice
sudo chown -R $USER composer.lock
y fue útil.fuente
Este podría ser un caso muy avanzado, pero si está utilizando Travis CI y aprovecha el almacenamiento en caché, es posible que desee borrar todo el caché y volver a intentarlo.
Se solucionó mi problema cuando pasaba de compilaciones sudo a compilaciones no sudo.
fuente
Obtuve la misma excepción, pero en mi caso estoy usando PowerShell para ejecutar comandos. Entonces, arreglé esto con una instrucción para desbloquear varios archivos primero.
PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File
y luego use lo siguiente para cargar el paquete& 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/package
fuente
En mi caso solía
sudo mkdir projectFolder
crear carpeta. Era propiedad de un usuario root y yo había iniciado sesión con un usuario que no era root.Así que cambié el permiso de la carpeta usando el comando
sudo chown mynonrootuser:mynonrootuser projectFolder
y luego funcionó bien.fuente