No se pudo abrir el archivo cargado: Permiso denegado en XAMPP MacOS
Estaba intentando subir un archivo usando php a mi local utilizando XAMPP en MacOS. Cada vez que intentaba subir un archivo a través de un script, obtenía este error.
move_uploaded_file
– No se pudo abrir el flujo: Permiso denegado.
Así que probé algunas soluciones que encontré en Internet, como chmod -R 777
, cambiando el grupo de usuarios e intentando dar permiso de lectura y escritura a todos los usuarios; Ninguna de ellas funcionó.
Este es el código que estoy utilizando para la subida:
if(!empty($filename)){
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$new_filename = $slug.'_'.time().'.'.$ext;
if(!move_uploaded_file($_FILES['eventImage']['tmp_name'], '../assets/images/events/'.$new_filename))
{
$_SESSION['error']='<strong>Error!</strong> Fallo al subir la imagen. Por favor, intenta de nuevo.';
}
}
else{
$new_filename = '';
}
Quiero saber cómo se puede solucionar este error. Creo que se trata de problemas de seguridad en MacOS.
davy.ai
Parece que el mensaje de error “move_uploaded_file – Failed to open stream: Permission denied” indica que hay un problema de permisos con la carpeta en la que estás intentando subir el archivo. A pesar de intentar varias soluciones, aún no has logrado resolver el problema.
Una posible solución alternativa para este error es cambiar la propiedad de la carpeta donde deseas subir el archivo. Puedes intentar cambiar el propietario de la carpeta a tu usuario actual utilizando el siguiente comando en tu Terminal:
sudo chown -R $(whoami) /ruta/a/la/carpeta
Reemplaza
/ruta/a/la/carpeta
por la ruta real de la carpeta para la cual deseas cambiar la propiedad.Otra solución sería otorgar los permisos necesarios a la carpeta editando el archivo
httpd.conf
de Apache.Abre el archivo
httpd.conf
en un editor de texto (por ejemplo,sudo nano /etc/apache2/httpd.conf
) y busca las directivasUser
yGroup
. Cambia los valores para que coincidan con tu usuario y grupo, por ejemplo:Guarda y cierra el archivo. Luego, reinicia Apache ingresando el siguiente comando en tu Terminal:
sudo apachectl restart
Esperemos que esto resuelva el problema de permisos y te permita subir archivos a través de tu script de PHP.