Saltar al contenido

Cómo corregir el error: mkdir (): permiso denegado al ejecutar el compositor

Esta es el arreglo más correcta que te podemos compartir, pero primero obsérvala pausadamente y valora si se puede adaptar a tu proyecto.

Solución:

Respuesta rápida:

Por razones de seguridad, mantengamos root como propietario y solo permitirnos leer, escribir y ejecutar dentro del área en la que trabajaremos.

  1. Cambiar directorios

    cd /var/www/

  2. Cambiar la propiedad del grupo

    sudo chown -Rv root:$USER .

  3. Agregar privilegios a nuestro grupo

    sudo chmod -Rv g+rw .

  4. Para el gran final, sigue adelante y crea tu nuevo proyecto de laravel

    composer create-project laravel/laravelnombre del proyecto--prefer-dist

Enhorabuena, hemos terminado. 🙂

Explicación detallada

Explicación detrás de la solución:
Por defecto tienes dos usuarios; root y $USER(esta es la variable global, pero el nombre real es lo que ponga como nombre de usuario). Cada usuario creado viene con un grupo también. Así que si mi nombre de usuario es johntengo un grupo llamado john. Hay muchas maneras de resolver este problema, pero prefiero esta ruta por varias razones:

  1. Todavía quiero root ser el propietario de los archivos por razones de seguridad.

  2. Estoy trabajando en un host local, por lo que no debería haber ningún otro usuario (invitado) escribiendo en mis archivos.

Para lograr esto, necesitaremos editar la propiedad del grupo y agregar los permisos adecuados. dejaremos el others como está y solo les permite leer y ejecutar los archivos.

Entonces empecemos:

  1. Me gusta estar en el directorio en el que estoy haciendo cambios para evitar errores, así que primero debemos ingresar al directorio en el que trabajaremos.

    cd /var/www/

  2. Tendremos que cambiar la propiedad del grupo de los directorios en los que trabajaremos. Comenzando desde el directorio en el que estamos y todos los directorios y archivos futuros que crearemos debajo de este directorio. Básicamente, todos los directorios secundarios de ahora en adelante serán propiedad de nuestro grupo.

    sudo chown -Rv root:$USER .

chown = comando para chángel propioejem.

-R = Recursivo: básicamente indica ejecutar el mismo comando en todos los directorios dentro de este directorio.

-v = detallado: declaramos aquí para mantenernos actualizados al mostrarnos lo que realmente está sucediendo.

root:$USER = Aquí es donde estamos configurando la propiedad. La primera palabra antes de los dos puntos (:) indica el root será el único dueño. La segunda palabra después de los dos puntos (:) indica que el propietario del grupo será $USER(el usuario actual).

. = Esto solo significa ‘aquí, en este directorio’.

  1. Ahora vamos a agregar los privilegios correctos a nuestro grupo. Tenga en cuenta que aquí es donde permitimos root ser el propietario principal mientras SOLO nos permitimos a nosotros mismos crear cambios (por supuesto, además root). Como mencioné antes, esto no permite que otros usuarios creen ningún cambio.

    sudo chmod -Rv g+rw .

chmod = comando para chángel modificaciónficaciones, en este caso, privilegios.

-Rv = Recursivo y Verboso

g = esto indica quién recibirá las modificaciones. En nuestro caso g-group Otras opciones son u-user y o-other.

+ = simboliza agregar

r = simboliza leer

w = simboliza escribir

  1. Ahora hemos terminado. Intente crear un nuevo proyecto de laravel.

    composer create-project laravel/laravelnombreProyecto` –prefer-dist

Nota: Si esto no funciona, ingrese el comando ls -al | grep $USER mientras que dentro de la /var/www/ directorio.

Si obtienes esto:
drwxrw-r-x

Te falta el ejecutable (x) privilegio para el grupo. El primero x es para el usuario y último x es para otros debe haber medio x para el grupo

Ejecute el siguiente comando y debería estar listo para comenzar:

sudo chmod -Rv g+x .

Ahora si corres ls -al | grep $USERdebe obtener:

drwxrwxr-x

  1. agregue el grupo “www” y agregue su usuario a este grupo

    sudo groupadd www
    sudo usermod -a -G www ec2-user
    
  2. cerrar sesión/iniciar sesión

  3. establecer la propiedad y los permisos de escritura

    sudo chown -R root:www /var/www
    sudo chmod 2775 /var/www
    find /var/www -type d -exec sudo chmod 2775  +
    find /var/www -type f -exec sudo chmod 0664  +
    

Referencia: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

Me encontré con una ErrorException similar al crear un proyecto adicional dentro del entorno Homestead/Vagrant. Anteriormente había agregado carpetas y rutas a Homestead.yaml.

Las respuestas de Oscar y Jens A. Koch apuntaban en la dirección correcta, pero van demasiado lejos en mi máquina de desarrollo.

Solución de trabajo más estrecha dentro de Homestead-Box:

sudo mkdir  
sudo chgrp vagrant 
sudo chmod g+wx 
composer create-project --prefer-dist laravel/laravel 

Sección de Reseñas y Valoraciones

Si sostienes alguna vacilación o disposición de ascender nuestro sección puedes ejecutar una reseña y con placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *