Sigo recibiendo este error cuando intento configurar el directorio de carga con Apache 2.2 y PHP 5.3 en CentOS.
En php.ini:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
En httpd.conf:
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
Permisos de directorio de CentOS:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
No importa lo que haga, sigo recibiendo este error de PHP cuando subo el archivo:
Advertencia: move_uploaded_file (images / robot.jpg): no se pudo abrir la transmisión: Permiso denegado en /var/www/html/mysite/process.php en la línea 78
Advertencia: move_uploaded_file (): no se puede mover '/ tmp / phpsKD2Qm' a 'images / robot.jpg' en /var/www/html/mysite/process.php en la línea 78
Como puede ver, nunca tomó la configuración del archivo php.ini con respecto al archivo de carga.
¿Qué estoy haciendo mal aquí?
php
upload
file-permissions
usuario63898
fuente
fuente
Respuestas:
Esto se debe
images
, ytmp_file_upload
sólo pueden ser escritos por elroot
usuario. Para que la carga funcione, debemos hacer que el propietario de esas carpetas sea el mismo que el propietario del proceso httpd O hacer que se pueda escribir globalmente (mala práctica).$ps aux | grep httpd
. La primera columna será el propietario, normalmente seránobody
Cambie el propietario
images
y eltmp_file_upload
sernobody
o sea el propietario que encontró en el paso 1.Chmod
images
ytmp_file_upload
ahora para que el propietario pueda escribirlo, si es necesario [Parece que ya tiene esto en su lugar]. Mencionado en la respuesta de @Dmitry Teplyakov.Para obtener más detalles sobre por qué sucedió este comportamiento, consulte el manual http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir , tenga en cuenta que también se refiere a la
open_basedir
directiva.fuente
jacob
(yo como es mi máquina local) y todas las carpetas tienen755
o775
.sudo service httpd restart
después de cambiar los permisos. Luego funcionó :) En lugar de cambiar de propietariochown
, agregué mi proceso de apache a un grupo 'www' y agregué estos directorios al mismo grupo 'www' a través dechgrp
También puede ejecutar este script para averiguar el propietario del proceso de Apache:
<?php echo exec('whoami'); ?>
Y luego cambie el propietario del directorio de destino a lo que tiene. Usa el comando:
Y luego usa el comando
para cambiar el permiso del directorio de destino.
fuente
<?php echo exec('whoami'); ?>
. Alguien sabe por qué ?exec('whoami')
. Me ahorró 30 minutos más. estaba presentando usuario de ubuntuwww-data
? generalmenteSi tiene Mac OS X, vaya a la raíz del archivo o la carpeta de su sitio web.
Luego haga clic con el botón derecho en él, vaya a obtener información, vaya al final ( Compartir y permisos ), ábralo, cambie todo de solo lectura para leer y escribir. Asegúrese de abrir el candado, vaya al icono de configuración y elija Aplicar a los elementos adjuntos ...
fuente
/private/var/tmp
de mi Mac.Esto funcionó para mí.
Luego cierre sesión o reinicie.
Si se
SELinux
queja, intente lo siguientefuente
Quería agregar esto a las sugerencias anteriores. Si está utilizando una versión de Linux que tiene habilitado SELinux , también debe ejecutar esto en un shell:
Además de otorgarle permisos de usuario a su servidor web, ya sea a través del grupo o el cambio del propietario del directorio.
fuente
restorecon -R -v /path/to/your/directory
probablemente también deba incluirse en esto después. access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…Cambiar permisos para esta carpeta
# chmod -R 0755 /var/www/html/mysite/images/
fuente
Prueba esto:
abrir / etc / apache2 / envvars
reemplazar
www-data
con suyour_username
reemplazar con
fuente
Me encontré con este problema relacionado incluso después de haber ejecutado con éxito el compositor. Actualicé el compositor, y cuando ejecuté
composer install
ophp composer.phar install
obtuve:Resulta que después de mucha investigación, las respuestas anteriores sobre el cambio de permisos para la carpeta funcionaron. Son directorios ligeramente diferentes ahora.
En mi instalación, en OS X, el archivo de caché está en
/Users/[USER]/.composer/cache
y estaba teniendo problemas porque el archivo de caché era propiedad de root. Cambiar la propiedad de '.composer' recursivamente a mi usuario resolvió el problema.Esto es lo que hice:
Luego ejecuté la instalación del compositor nuevamente y ¡listo!
fuente
Este problema ocurre cuando el usuario de apache (www-data) no tiene permiso para escribir en la carpeta. Para resolver este problema, debe colocar al usuario dentro del grupo www-data.
Acabo de hacer esto:
Ejecute este código php
<?php echo exec('whoami'); ?>
para descubrir el usuario utilizado por apache. Después, ejecute los comandos en la terminal:Devolverá algo como esto:
Mantuve el usuario pero cambié el grupo a www-data
fuente
La solución es muy fácil. Solo haga clic derecho en la carpeta IMAGEN (destino), vaya a propiedades, haga clic en la pestaña de permiso y cambie el acceso de otros a Crear y eliminar archivos .
fuente
Simplemente cambie el permiso de tmp_file_upload a 755 El siguiente es el comando chmod -R 755 tmp_file_upload
fuente
Prueba esto
find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664
fuente