¿Por qué obtengo "permiso denegado" en PHP cuando intento cambiar el nombre de un directorio?

StackOverflow https://stackoverflow.com/questions/196114

  •  10-07-2019
  •  | 
  •  

Pregunta

Cambié el directorio a 777, lo mismo con el contenido del directorio. Aún así, recibo un " permiso denegado " error. ¿PHP arroja este error si apache no es el grupo / propietario, independientemente de los permisos del archivo? Aquí está la llamada que está fallando:

rename('/correct/path/to/dir/1', '/correct/path/to/dir/2');
¿Fue útil?

Solución

Estás editando el directorio de nivel superior, por lo que el usuario de PHP necesita tener acceso de escritura a ese directorio.

Otros consejos

Eso es probablemente porque apache no es el propietario del directorio padre. Cambiar el nombre (o mover) un archivo es básicamente lo mismo que crear un nuevo archivo.

para aclarar, php solo puede cambiar el nombre de los directorios de los que tiene una propiedad real:

-rwxrwxrwx user   user   temp/
-rwxr-xr-x apache apache temp2/
-rw-r--r-- user   user   script.php

suponga que script.php está intentando cambiar el nombre de estos dos directorios:

// this operation fails as PHP (running as apache) does not own "temp",
// despite having write permissions    
rename('temp', 'temp.bak');

// this operation is successful as PHP owns "temp2"
rename('temp2, 'temp.bak'); 

Intente ejecutar el siguiente script:

print_r(posix_getpwuid(getmyuid()));
print_r(pathinfo($YOUR_PATH));

Y mira lo que eso devuelve.

Otra cosa que podría ayudar a este tipo de situaciones es intentar reducir realmente los permisos. He visto ocasiones en las que apache niega el permiso de una aplicación para hacer algo porque sus permisos están configurados demasiado alto . Supongo que esto es para fomentar las buenas prácticas de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top