2012-07-13 14 views
7

Sto tentando di utilizzare la funzione PHP unlink() per eliminare il documento specifico nella cartella. Quella particolare cartella è già stata assegnata a tutti i diritti dell'utente di IIS.Come utilizzare la funzione Unlink()

Codice:

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

E mantenere ritorno sicuro. Sample.docx risiede su quel particolare percorso. Raccomanda gentilmente.

+0

Hai controllato se avete il permesso di eliminare i file? Addiotinally, prova ad usare un percorso assoluto, come questo: '$ Path = '/ doc/stuffs/sample.docx'' –

+0

sì. Posso scaricare quel particolare file in modo che il mio percorso dovrebbe funzionare. – JLearner

+0

Se sei sicuro che le autorizzazioni siano corrette, suppongo che il percorso sia sbagliato, come suggerisce Marcio. Hai provato a controllarlo con 'file_exists()'? – SilverSnake

risposta

9

ho trovato queste informazioni in the comments of the function unlink()

In Windows Sistema e Apache, negato l'accesso a file è un consueto errore scollegare file. Per eliminare il file è necessario modificare il proprietario del file. Un esempio:

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

Quindi provare qualcosa di simile:

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

chown($path, 666); 

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

EDIT 1

tenta di utilizzare questo nel percorso:

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

non funziona. cade nella dichiarazione else che fallisce :( – JLearner

+0

@JLearner, Prova a fare la nuova modifica che ho fatto –

+0

Ho fatto degli errori incuranti sul mio percorso di file inserendo 1 '.' lees =. = – JLearner

6

Prova questo:

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

Se si ottiene il file non esiste, si ha la strada sbagliata. In caso contrario, potrebbe essere un problema di autorizzazioni.

+0

Ciao Travis. Mi dà il file non esiste, ma il percorso è anche utilizzato per scaricare il documento e funziona .... – JLearner

+0

./ indica che il percorso è relativo dal percorso da cui viene eseguito lo script. Questo script viene eseguito dalla stessa directory in cui viene eseguito lo script per scaricare il file? – Travis

+0

Hai menzionato che il percorso è stato acquisito da un'altra pagina con ./ di fronte. codice o un riferimento approfondito a dove il percorso del file proviene? – Travis

0

È necessario il percorso file completo per il file di interesse. Ad esempio: C: \ doc \ stuff \ sample.docx. Prova a utilizzare __DIR__ o __FILE__ per ottenere la posizione del file relativo in modo da poter accedere al file di interesse.

+0

Non posso farlo perché quel particolare percorso è stato analizzato da un'altra pagina web con "./" davanti. – JLearner

+0

Stai tentando di eliminare un file sul file system di un altro sito? –

+0

È nello stesso server Web – JLearner

2

Questo dovrebbe w ork una volta che hai finito con il problema del permesso. Anche provare

ini_set('display_errors', 'On'); 

Che vi dirà che cosa è sbagliato

+0

dice no tale percorso o directory ... ma esiste .. – JLearner

+1

provare a scollegare ($ _ 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 
Problemi correlati