acceso denegado – PHP archivo_cargado_subido – Ubuntu LAMP / var / www

Me doy cuenta de que hay algún tipo de problema con los permisos en mi carpeta tmp o en la carpeta de imágenes que creé en la carpeta / var / www. Sé que / var / www inicialmente tiene acceso de root. He estado siguiendo algunos tutoriales en línea para tratar de solucionar este problema y he cambiado mis permisos a quién sabe qué en la última hora más o menos.

Recibo este error cuando bash cargar un archivo desde un formulario HTML usando PHP / MySQL:

Warning: move_uploaded_file(images/verified-gw.gif): failed to open stream: Permission denied in /var/www/addscore.php on line 40 Warning: move_uploaded_file(): Unable to move '/tmp/phpla4QCP' to 'images/verified-gw.gif' in /var/www/addscore.php on line 40 cannot move uploaded file or something beavis 

Así que creo que los permisos en la carpeta / var / www / images son incorrectos o los permisos en la carpeta tmp son root y el kernel de ubuntu no permite que el script php se mueva de este archivo raíz a la carpeta de imágenes que tiene permisos de mi cuenta de usuario que yo sepa y que está en el grupo de nadie.

Estoy bastante perdido, cualquier ayuda es definitivamente apreciada.

Ubuntu Linux gnome captura de pantalla de los permisos de una carpeta

Arriba puedes ver una imagen de los permisos en la carpeta de imágenes a la que bash mover el archivo desde el directorio tmp.

Ah, y aquí está el script PHP que falla:

 if (!empty($screenshot)) { move_uploaded_file($_FILES['screenshot']['tmp_name'], $target) or die (' cannot move uploaded file or something beavis'); 

Respetuosamente,

usuario

trabajando con MOD DIR de USUARIO

Si esta es la máquina del desarrollador, y creo que es, no intente usar / var / www (siempre habrá un problema de permiso) Intente usar el directorio de usuario

mantendrá todos sus archivos y proyectos en su hogar y no habrá problemas de permisos.

trabajando con el directorio raíz de Apache

Ok, entonces si no puedes trabajar con el directorio de usuario, tienes que configurar un sistema de archivos como este:

1. Descubre el nombre de usuario del propietario de apache. Si usa Ubuntu, debería ser www-data. Ve a la terminal y escribe:

$ ps aux | grep apache

Deberías obtener algo como esto a continuación. La primera columna es nombre de usuario.

www-data 2070 0.0 0.0 463244 7788 ? S sty25 0:00 /usr/sbin/apache2 -k start

2. Descubre el grupo de usuarios de apache. De nuevo terminal, escriba:

$ sudo groups www-data

Deberías obtener algo como esto a continuación. La segunda columna es el nombre del grupo.

www-data : www-data

3. Establezca el usuario propietario DERECHO y el grupo de propietarios para apache root dir:

$ sudo chown -R www-data:www-data /var/www/

4. Establezca los privilegios DERECHOS para el directorio raíz de apache:

$ sudo chmod -R 775 /var/www/

Ahora tiene su sistema limpio, y tratamos de repararlo para que tenga acceso al directorio / var / www.

5. Agregue el grupo apache a su usuario:

$ sudo usermod -a -G www-data {YOUR_USER_NAME}

¡ADVERTENCIA! no te olvides de un cambio! de esta forma, agrega un nuevo grupo a la lista existente y no reemplaza la lista de grupos antiguos por uno nuevo.

Ahora tiene acceso de lectura / escritura a archivos ubicados en el directorio raíz de apache. Y tenemos que decirle a apache que los nuevos archivos deben ser legibles / escribibles a los miembros del grupo

6. Agregue el comando umask a la configuración del entorno apache:

$ sudo echo umask 002 >> /etc/apache2/envvars

o con el editor gráfico:

$ gksudo gedit /etc/apache2/envvars

y coloque umask 002 como última línea en este archivo

7. Voila

$ sudo apache2ctl restart

¡Buena suerte!

Esto resolvió mi problema: http://ubuntuforums.org/showthread.php?t=1842090&s=8b97ec72fe7cd753910f488329a90f0f&p=11239688#post11239688

tl: dr – Escribí esto: sudo chown -R www-data:www-data /var/www

No creo que haya sido una combinación de intentar modificar el directorio tmp y esto. Creo que solo está cambiando los permisos en la carpeta / var / www donde se guardan todos los archivos LAMP.

Ahora el script PHP funciona y arroja el archivo de imagen en el directorio que hice. Sería más fácil si Ubuntu instalara servidores de prueba como esta stack LAMP en el directorio de usuarios sin tener que aprender permisos de archivos como si estuviera protegiendo mis archivos de los submarinos de los nazis.

prueba esto: sudo chown -R 777 /var/www/images

necesita dar al archivo un permiso público 777 O 755 para que el archivo pueda cargarse en el directorio especificado, solo un permiso