php - txt - unlink permission denied
¿Cómo eliminar un archivo a través de PHP? (6)
La solución AIO, maneja todo, no es mi trabajo, pero simplemente me mejoré. ¡Disfrutar!
/**
* Unlink a file, which handles symlinks.
* @see https://github.com/luyadev/luya/blob/master/core/helpers/FileHelper.php
* @param string $filename The file path to the file to delete.
* @return boolean Whether the file has been removed or not.
*/
function unlink ( $filename ) {
// try to force symlinks
if ( is_link ($filename) ) {
$sym = @readlink ($filename);
if ( $sym ) {
return is_writable ($filename) && @unlink ($filename);
}
}
// try to use real path
if ( realpath ($filename) && realpath ($filename) !== $filename ) {
return is_writable ($filename) && @unlink (realpath ($filename));
}
// default unlink
return is_writable ($filename) && @unlink ($filename);
}
¿Cómo elimino un archivo de mi servidor con PHP si el archivo está en otro directorio?
Aquí está el diseño de mi página:
-
projects/backend/removeProjectData.php
(este archivo borra todas mis entradas para la base de datos y también debe eliminar el archivo relacionado) -
public_files/22.pdf
(el lugar donde se encuentra el archivo)
Estoy usando la función de unlink
:
unlink(''../../public_files/'' . $fileName);
Pero esto siempre me da un error de que el archivo no existe. ¿Algunas ideas?
Lo siguiente debería ayudar
-
realpath
- Devuelve el nombre de ruta absoluta canonicalizado -
is_writable
- Indica si el nombre de archivo es modificable -
unlink
: elimina un archivo
Ejecute su ruta de archivo a través de ruta real, luego verifique si la ruta devuelta es escribible y, de ser así, desvísela.
Puede eliminar el archivo usando
unlink($Your_file_path);
pero si está borrando un archivo de su ruta http, este desvinculación no funciona correctamente. Tienes que dar una ruta de archivo correcta.
Sé que esta pregunta es un poco vieja, pero esto es algo simple que me funciona muy bien para eliminar imágenes de mi proyecto en el que estoy trabajando.
unlink(dirname(__FILE__) . "/img/tasks/" . ''image.jpg'');
La sección dirname(__FILE__)
imprime la ruta base a su proyecto. Las /img/tasks/
están dos carpetas hacia abajo desde mi ruta base. Y finalmente, está mi imagen que quiero borrar, que puedes convertir en lo que necesites.
Con esto no he tenido ningún problema para obtener mis archivos en mi servidor y eliminarlos.
Verifique sus permisos antes que nada en el archivo, para asegurarse de que puede a) verlo desde su script, yb) puede eliminarlo.
También puede usar una ruta calculada desde el directorio en el que está actualmente ejecutando el script, por ejemplo:
unlink(dirname(__FILE__) . "/../../public_files/" . $filename);
(en PHP 5.3 creo que puedes usar la constante __DIR__
lugar de dirname()
pero aún no la he usado)
$files = [
''./first.jpg'',
''./second.jpg'',
''./third.jpg''
];
foreach ($files as $file) {
if (file_exists($file)) {
unlink($file);
} else {
// File not found.
}
}