2013-09-26 8 views
6

Sto tentando di eliminare la foto in php utilizzando lo scollegamento. L'ho usato prima su altri server ma questa volta non funziona. Ho usato il percorso assoluto per un test ma ancora non funziona:PHP Unlink Non funziona

L'ho usato come: unlink ('img1.jpg');

e:

unlink('http://www.mysite.com/img1.jpg'); 

Si prega chiunque abbia tale esperienza?

+3

Non è possibile eliminare utilizzando un url. Hai provato un percorso completo del filesystem, come '/ var/www/mysite.com/img1.jpg'? – Maerlyn

+0

C'è qualche errore? Forse non hai le autorizzazioni per eliminare questo file o il file è da qualche altra parte sul server. 'Unlink' con http: // ... indirizzo non funzionerà, devi usare il percorso del server. – Jojo

+0

L'ho usato come: unlink ('img1.jpg'); ma non funziona – Sunil

risposta

6

url proibisce in funzione ulink

Potete per favore usato questo

E 'meglio, anche la sicurezza saggio usare un percorso assoluto. Ma puoi ottenere questo percorso in modo dinamico.

E.g. utilizzando:

getcwd(); 

A seconda di dove lo script PHP è, la variabile potrebbe essere la seguente:

$deleteImage = getcwd() . 'img1.jpg'; 

unlink($deleteImage); 

controllo questo

bool unlink (string $filename [, resource $context ]) 

e

nome file
Percorso del file.

Quindi solo prende una stringa come nome file.

Assicurarsi che il file sia raggiungibile con il percorso dalla posizione in cui si esegue lo script. Questo non è un problema con percorsi assoluti, ma potresti averne uno con percorsi relativi.

+1

Sì, lavorando con getcwd() ma non so perché non con il percorso assoluto. Comunque grazie Patel. Reg, Sunil – Sunil

2

anche se unlink() supporta gli URL (see here) ora, http: // non è supportato: http wrapper information

utilizzare un percorso del file system per eliminare il file.

0

unlink non funzionerà con unlink('http://www.mysite.com/img1.jpg');

uso invece unlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg'); // prende la directory corrente o ,

unlink($_SERVER['DOCUMENT_ROOT'].'dir_name/img1.jpg'); 

Ci possono essere permessi dei file issue.please verificare questo.

0

Assegna il percorso relativo dalla cartella in cui sono conservate le immagini nel file in cui si sta scrivendo lo script. Se la struttura del file è simile:

-your php file 
-images 
    -1.jpg 

then 

unlink(images/1.jpg); 

O ci può essere qualche problema di autorizzazione della cartella. I tuoi file sono su un server o lo stai eseguendo su localhost? Se si trova su un server, fornire 755 autorizzazioni alla cartella delle immagini.

1

percorso utilizzo del filesystem,
prima definire il percorso in questo modo:

define("WEB_ROOT",substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-3)); 

e verificare file esiste o no, se esiste quindi scollegare il file.

$filename=WEB_ROOT."img1.jpg"; 
if(file_exists($filename)) 
{ 
$img=unlink(WEB_ROOT."img1.jpg"); 
} 
2

Se si utilizza scollegare in un Linux o UNIX si dovrebbe anche verificare i risultati delle is_writable (string $filename) E se la funzione restituisce false, si dovrebbe verificare i permessi dei file con fileperms (string $filename).

Le autorizzazioni file sono problemi usuali su spazi web, ad es. se carichi un file per ftp con un utente ftp e il server web è in esecuzione come un altro utente.

Se questo è il problema, è necessario fare per un img1.jpg RWD

chmod o +

o

chmod 777 img1.jpg

per le autorizzazioni di scrittura (ed eliminazione) per altri utenti.