help_outline
Ayudanos!
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Warning: mkdir(): Permission denied

  • 5 Respuestas
  • 338 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 57
  • Actividad:
    5%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email
« en: Enero 03, 2019, 07:35:22 pm »
Buenas gente, estoy siguiendo un tutorial de CRUD en PHP y tengo el siguiente codigo:
Código: [Seleccionar]
$directorio = "vistas/img/usuarios".$_POST["nuevoUsuario"];

mkdir($directorio, 0755);
El cual me tira el siguiente error:
Warning: mkdir(): Permission denied in /opt/lampp/htdocs/pos/controladores/usuarios.controlador.php on line 65

Estoy en una MacBook Pro y entiendo que es por los permisos de las carpetas.
Como podria solucionarlo??
Gracias anticipadas y Saludos desde Mexico!!
« Última modificación: Enero 04, 2019, 06:42:43 am por HATI »

Marcado como mejor respuesta por: RiojasMx en Enero 03, 2019, 07:51:13 pm

Conectado Mortal_Poison

  • *
  • Colaborador
  • *
  • Mensajes: 149
  • Actividad:
    51.67%
  • Reputación 15
  • Become the change you seek in the world. -Gandhi.
    • Ver Perfil
    • VIINACADEMY
  • Twitter: https://www.twitter.com/Mortal_Poison_
« Respuesta #1 en: Enero 03, 2019, 07:43:40 pm »
Buenas tardes RiojasMx,

Simplemente pon en tu terminal lo siguiente:

chmod -R +777 /opt/lampp/htdocs/

Cuéntanos cómo te fue.

Un saludo.
Become the change you seek in the world. -Gandhi.


Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 57
  • Actividad:
    5%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email
« Respuesta #2 en: Enero 03, 2019, 07:53:42 pm »
Buenas tardes RiojasMx,

Simplemente pon en tu terminal lo siguiente:

chmod -R +777 /opt/lampp/htdocs/

Cuéntanos cómo te fue.

Un saludo.

Gracias bro, se soluciono pero puse esto:
Código: [Seleccionar]
sudo chmod 777 /Users/riojas/.bitnami/stackman/machines/xampp/volumes/root/htdocs/Ya que como tu me lo pusiste me decia
Código: [Seleccionar]
chmod: Invalid file mode: +777Saludos y de nuevo gracias!!

Desconectado WHK

  • *
  • Underc0der
  • Mensajes: 71
  • Actividad:
    5%
  • Reputación 3
    • Ver Perfil
« Respuesta #3 en: Enero 03, 2019, 09:55:49 pm »
Hola, hay dos cosas acá que son importantes destacar, lo primero es que tienes claramente un problema de permisos de archivos y directorios de lo cual no te recomiendo dar un 777 porque estarás arriesgando la seguridad de tu equipo, a la carpeta donde se crearán. Según tu trozo de código dice:

Código: [Seleccionar]
mkdir($directorio, 0755);
Intenta reemplazarlo por:

Código: [Seleccionar]
mkdir($directorio, 0755, true);
Esto hará que haga los directorios que no existen, probablemente la ruta que le estás dando no existe, y si existe, quiere decir que apache se está ejecutando con permisis totalmente distintos al directorio public_html, o has creado directorios de manera manual y se han creado con permisos de autoría de tu usuario del sistema operativo cuando apache funciona con un usuario totalmente distinto.

Código: [Seleccionar]
chmod -R +777 /opt/lampp/htdocs/
Si realmente quieres solucionar el problema de una manera muy rápida, basta con quitar el signo más y volverlo a intentar, pero el permiso 777 quiere decir que cualquier usuario dentro del sistema tendrá permisos para acceder, modificar y ejecutar archivos, esto quiere decir que alguien sin privilegios en tu pc (ya sea por un hackeo o un pariente que use prestado tu lap) tendrá acceso absoluto a ese directorio.

Lo normal primeramente es que el directorio solo tenga permisos para si mismo, esto quiere decir chmod 644, luego de eso debes decirle al sistema a que usuario le pertenece el archivo, para esto hay que darle un vistazo al directorio de lampp para saber que usuario está utilizando y para ello debes ingresar a tu terminal y ejecutar:

Código: [Seleccionar]
ls -lah /opt/lampp/htdocs
Este te dirá quien es el propietario. Por ejemplo, si el usuario es lampp, entonces debes ejecutar un cambio de propietario de manera recursiva de esta manera:

Código: [Seleccionar]
chown -r lampp:lampp /opt/lampp/htdocs/
Ahora, una ves que hayas solucionado tu problema actual debes asegurarte que no vuelva a suceder y para esto debes trabajar siempre manteniendo los permisos originales de cada archivo y directorio o corregirlos cada ves que haces un cambio. Si no tienes experiencia te recomiendo corregir los permisos en cada modificación, pero si tienes deseos de meter manos a tu sistema entonces debes modificar el archivo de configuración del apache y decirle que cambie los permisos de usuario al arrancar y que en ves de que se ejecute como lampp, que lo haga utilizando tu usuario principal del sistema, sino, también puedes agregar el grupo de lampp a tu usuario y eso se hace utilizando el comando usermod.

Acá te daré algunos enlaces para que investigues un poco más:

https://www.solvetic.com/tutoriales/article/1458-entender-los-permisos-linux-chmod/
https://www.computernetworkingnotes.com/ubuntu-linux-tutorials/how-to-fix-permission-of-htdocs-folder-in-ubuntu-linux.html

En un futuro para prevenir estos engorrosos problemas, puedes hacer uso de un servidor virtual utilizando la aplicación llamada VirtualBox. Te recomiendo el uso de un Sistema Operativo acorde a tus proyectos, en este caso CentOS7 + httpd + mysql, de esta manera no ensuciarás tu sistema operativo principal. Acá algunos tutoriales:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7
https://www.howtoforge.com/tutorial/centos-lamp-server-apache-mysql-php/

Si tienes más dudas, puedes volver y preguntarnos nuevamente. Saludos.
« Última modificación: Enero 03, 2019, 09:57:39 pm por WHK »

Conectado Mortal_Poison

  • *
  • Colaborador
  • *
  • Mensajes: 149
  • Actividad:
    51.67%
  • Reputación 15
  • Become the change you seek in the world. -Gandhi.
    • Ver Perfil
    • VIINACADEMY
  • Twitter: https://www.twitter.com/Mortal_Poison_
« Respuesta #4 en: Enero 03, 2019, 10:05:47 pm »
Es totalmente cierto lo que puso @WHK, de hecho, podrías concederle permisos de www-data para que no tenga permisos de /bin/bash y que la aplicación se ejecute con los mismos. Cuando le das esos permisos(777 - que son prácticamente todos) cualquiera puede leer/ejecutar/modificar/ cualquier archivo desde ahí y por ende, es un hueco que tendrías(y grave).

Cuando te respondí, fue para solucionar rápidamente el problema pero @WHK te ha dado una respuesta más acertada y cuidado con los permisos, ya que cualquiera de este tipo de cosas en un servidor, puede ocasionar más de un problema.


Un saludo. 
Become the change you seek in the world. -Gandhi.


Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 57
  • Actividad:
    5%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email
« Respuesta #5 en: Enero 03, 2019, 11:39:43 pm »
Hola, hay dos cosas acá que son importantes destacar, lo primero es que tienes claramente un problema de permisos de archivos y directorios de lo cual no te recomiendo dar un 777 porque estarás arriesgando la seguridad de tu equipo, a la carpeta donde se crearán. Según tu trozo de código dice:

Código: [Seleccionar]
mkdir($directorio, 0755);
Intenta reemplazarlo por:

Código: [Seleccionar]
mkdir($directorio, 0755, true);
Esto hará que haga los directorios que no existen, probablemente la ruta que le estás dando no existe, y si existe, quiere decir que apache se está ejecutando con permisis totalmente distintos al directorio public_html, o has creado directorios de manera manual y se han creado con permisos de autoría de tu usuario del sistema operativo cuando apache funciona con un usuario totalmente distinto.

Código: [Seleccionar]
chmod -R +777 /opt/lampp/htdocs/
Si realmente quieres solucionar el problema de una manera muy rápida, basta con quitar el signo más y volverlo a intentar, pero el permiso 777 quiere decir que cualquier usuario dentro del sistema tendrá permisos para acceder, modificar y ejecutar archivos, esto quiere decir que alguien sin privilegios en tu pc (ya sea por un hackeo o un pariente que use prestado tu lap) tendrá acceso absoluto a ese directorio.

Lo normal primeramente es que el directorio solo tenga permisos para si mismo, esto quiere decir chmod 644, luego de eso debes decirle al sistema a que usuario le pertenece el archivo, para esto hay que darle un vistazo al directorio de lampp para saber que usuario está utilizando y para ello debes ingresar a tu terminal y ejecutar:

Código: [Seleccionar]
ls -lah /opt/lampp/htdocs
Este te dirá quien es el propietario. Por ejemplo, si el usuario es lampp, entonces debes ejecutar un cambio de propietario de manera recursiva de esta manera:

Código: [Seleccionar]
chown -r lampp:lampp /opt/lampp/htdocs/
Ahora, una ves que hayas solucionado tu problema actual debes asegurarte que no vuelva a suceder y para esto debes trabajar siempre manteniendo los permisos originales de cada archivo y directorio o corregirlos cada ves que haces un cambio. Si no tienes experiencia te recomiendo corregir los permisos en cada modificación, pero si tienes deseos de meter manos a tu sistema entonces debes modificar el archivo de configuración del apache y decirle que cambie los permisos de usuario al arrancar y que en ves de que se ejecute como lampp, que lo haga utilizando tu usuario principal del sistema, sino, también puedes agregar el grupo de lampp a tu usuario y eso se hace utilizando el comando usermod.

Acá te daré algunos enlaces para que investigues un poco más:

https://www.solvetic.com/tutoriales/article/1458-entender-los-permisos-linux-chmod/
https://www.computernetworkingnotes.com/ubuntu-linux-tutorials/how-to-fix-permission-of-htdocs-folder-in-ubuntu-linux.html

En un futuro para prevenir estos engorrosos problemas, puedes hacer uso de un servidor virtual utilizando la aplicación llamada VirtualBox. Te recomiendo el uso de un Sistema Operativo acorde a tus proyectos, en este caso CentOS7 + httpd + mysql, de esta manera no ensuciarás tu sistema operativo principal. Acá algunos tutoriales:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7
https://www.howtoforge.com/tutorial/centos-lamp-server-apache-mysql-php/

Si tienes más dudas, puedes volver y preguntarnos nuevamente. Saludos.

Lo hice así como comentas para evitar  problemas y funciona
Muchas gracias por los consejos!!

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 9222
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2376
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1775
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 3391
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3670
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon