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 deniedes 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.jsonaún no hay archivo.~/.composer/carpeta?kramer65no tiene derecho a escribir, parece,chmodpodrí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, ochownella, pero es una buena idea para cambiar este comportamiento por defecto?755modo. 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
~/.composerPara resolver esto, debe abrir una ventana de terminal y escribir este comando:
sudo chown -R user ~/.composer(usersiendo 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 .composerfuente
En mi caso,
.composerera propiedad de root, así que lo hicesudo rm -fr .composery 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.locky 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-Filey luego use lo siguiente para cargar el paquete& 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/packagefuente
En mi caso solía
sudo mkdir projectFoldercrear 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 projectFoldery luego funcionó bien.fuente