2012-07-13 22 views
7

Estoy tratando de utilizar la función PHP unlink() para eliminar el documento específico en la carpeta. Esa carpeta en particular ya ha sido asignada a derechos completos para el usuario de IIS.Cómo utilizar la función Desvincular()

Código:

$Path = './doc/stuffs/sample.docx'; 
if (unlink($Path)) {  
    echo "success"; 
} else { 
    echo "fail";  
} 

Se mantienen retorno a prueba. El sample.docx reside en esa ruta particular. Consejo amable.

+0

Ha comprobado si tiene permiso para eliminar archivos? Addiotinalmente, intente utilizar una ruta absoluta, como esta: '$ Path = '/ doc/stuffs/sample.docx'' –

+0

sí. Puedo descargar ese archivo en particular para que mi ruta funcione. – JLearner

+0

Si está seguro de que los permisos son correctos, supongo que la ruta es incorrecta, como sugiere Marcio. ¿Has intentado comprobarlo con 'file_exists()'? – SilverSnake

Respuesta

9

He encontrado esta información in the comments of the function unlink()

bajo sistema de Windows y Apache, le niega el acceso a archivo es un error habitual desvincular archivo. Para eliminar el archivo, debe cambiar el propietario del archivo. Un ejemplo:

chown($tempDirectory . '/' . $fileName, 666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody" 
unlink($tempDirectory . '/' . $fileName); 

Así que trate de algo como esto:

$path = './doc/stuffs/sample.docx'; 

chown($path, 666); 

if (unlink($path)) { 
    echo 'success'; 
} else { 
    echo 'fail'; 
} 

EDIT 1

intenta utilizar esto en el camino:

$path = '.' 
     . DIRECTORY_SEPARATOR . 'doc' 
     . DIRECTORY_SEPARATOR . 'stuffs' 
     . DIRECTORY_SEPARATOR . 'sample.docx'; 
+0

no funciona. cae en la declaración else que es un error :( – JLearner

+0

@JLearner, intenta hacer la nueva edición que he hecho –

+0

Hice algunos errores descuidados en mi ruta de archivo al poner 1 '.' lees =. = – JLearner

6

Prueba esto:

$Path = './doc/stuffs/sample.docx'; 
if (file_exists($Path)){ 
    if (unlink($Path)) { 
     echo "success"; 
    } else { 
     echo "fail";  
    } 
} else { 
    echo "file does not exist"; 
} 

Si obtiene el archivo no existe, usted tiene el camino equivocado. Si no, puede ser un problema de permisos.

+0

Hola travis. Me da el archivo no existe. Pero la ruta también se usa para descargar el documento y funciona .... – JLearner

+0

./ significa que la ruta es relativa a la ruta desde la que se ejecuta el script. ¿Se ejecuta este script desde el mismo directorio desde el que se ejecutó el script para descargar el archivo? – Travis

+0

Mencionó que la ruta se adquirió desde otra página con un ./ frente a este. ¿Puede proporcionar más ¿código o una referencia en profundidad de dónde viene la ruta del archivo? – Travis

0

Necesita la ruta completa del archivo de su interés. Por ejemplo: C: \ doc \ stuff \ sample.docx. Intente utilizar __DIR__ o __FILE__ para obtener su posición relativa de archivo para que pueda navegar hasta el archivo de su interés.

+0

No puedo hacer eso porque esa ruta particular fue analizada desde otra página web con './' al frente. – JLearner

+0

¿Está intentando eliminar un archivo en el sistema de archivos de otro sitio? –

+0

Está en mi mismo servidor web – JLearner

2

Este debería w ork una vez que haya terminado con el problema de permiso. Pruebe también

ini_set('display_errors', 'On'); 

que le dirá cuál es incorrecto

+0

dice que no ruta o directorio ... pero existe .. – JLearner

+1

try unlink ($ _ SERVER ['DOCUMENT_ROOT']. "/ doc/stuffs/sample.docx"); – leet

0
define("BASE_URL", DIRECTORY_SEPARATOR . "book" . DIRECTORY_SEPARATOR); 
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL); 

$path = "doc/stuffs/sample.docx"; 

if (unlink(ROOT_PATH . $Path)) { 
    echo "success"; 
} else { 
    echo "fail";  
} 

// http://localhost/book/doc/stuffs/sample.docx 
// C:/xampp/htdocs\book\doc/stuffs/sample.docx 
Cuestiones relacionadas