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é durante la última hora más o menos.
Recibo este error cuando intento 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 está en el grupo nadie.
Estoy bastante perdido, cualquier ayuda es definitivamente apreciada.
Arriba puede ver una imagen de los permisos en la carpeta de imágenes a la que estoy tratando de mover el archivo del 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
Si se trata de una máquina de desarrollo, y creo que lo es, no intente usar /var/www (siempre habrá problemas de permisos) Intente usar el directorio de usuario
mantendrás todos tus archivos y proyectos en tu casa y no habrá problemas de permisos.
Bien, si no puede trabajar con el directorio de usuario, debe configurar un sistema de archivos como este:
1. Averigüe 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ía obtener algo como esto a continuación. La primera columna es el nombre de usuario.
www-data 2070 0.0 0.0 463244 7788 ? S sty25 0:00 /usr/sbin/apache2 -k start
2. Descubra el grupo de usuarios de apache. Nuevamente terminal, escriba:
$ sudo groups www-data
Debería obtener algo como esto a continuación. La segunda columna es el nombre del grupo.
www-data : www-data
3. Establezca el usuario y el grupo de propietarios DERECHOS para el directorio raíz de apache:
$ 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 ha limpiado su sistema e intentamos arreglar su usuario 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 olvides - un interruptor! de esta manera, agrega un nuevo grupo a la lista existente y no reemplaza la lista de grupos antiguos con una nueva.
Ahora tiene acceso de lectura/escritura a los archivos ubicados en el directorio raíz de apache. Y necesitamos decirle a apache que los nuevos archivos deben ser legibles/escribibles para 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 editor gráfico:
$ gksudo gedit /etc/apache2/envvars
y coloque umask 002
como última línea en este archivo
7. Voilá
$ 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 chmod el chown del 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 lanza el archivo de imagen en el directorio que hice. Sería más fácil si Ubuntu instalara servidores de prueba como esta pila LAMP en el directorio de usuario sin tener que aprender los permisos de archivo como si estuviera protegiendo mis archivos de los submarinos nazis.
prueba esto: sudo chown -R 777 /var/www/images
debe otorgarle al archivo un permiso público 777 O 755 para que el archivo se pueda cargar en el directorio especificado, es solo un permiso