2013-09-26 3 views
6

Ich versuche, Foto in php mit unlink zu löschen. Ich habe es früher auf einem anderen Server verwendet, aber dieses Mal funktioniert es nicht. Ich habe absoluten Pfad für einen Test verwendet, funktioniert aber immer noch nicht:PHP Verknüpfung nicht funktioniert

Ich habe es als verwendet: unlink ('img1.jpg');

und:

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

Bitte jemand eine solche Erfahrung mit?

+3

Sie können nicht mit einer URL löschen. Haben Sie einen vollständigen Dateisystempfad wie '/ var/www/mysite.com/img1.jpg' versucht? – Maerlyn

+0

Gibt es einen Fehler? Vielleicht haben Sie keine Berechtigung, diese Datei zu löschen, oder die Datei befindet sich irgendwo auf dem Server. 'unlink' mit http: // ... Adresse funktioniert nicht, Sie müssen den Serverpfad verwenden. – Jojo

+0

Ich habe es als verwendet: unlink ('img1.jpg'); aber funktioniert nicht – Sunil

Antwort

6

url erlauben nicht in ulink Funktion

können Sie diese

verwendet es bitte ist besser, auch weise Sicherheit bringen einen absoluten Pfad zu verwenden. Aber Sie können diesen Pfad dynamisch erhalten.

z. Verwendung:

getcwd(); 

Je nachdem, wo Sie Ihre PHP-Skript ist, könnte Ihre Variable wie folgt aussehen:

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

unlink($deleteImage); 

Kontrolle dieses

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

und

Dateiname
Pfad zur Datei.

So es nur nimmt eine Zeichenfolge als Dateiname.

Stellen Sie sicher, dass die Datei mit dem Pfad von dem Ort erreichbar ist, an dem Sie das Skript ausführen. Dies ist kein Problem mit absoluten Pfaden, aber Sie haben möglicherweise einen Pfad mit relativen Pfaden.

+1

Ja, ich arbeite mit getcwd(), aber ich weiß nicht, warum nicht mit absolutem Pfad. Wie auch immer, danke Patel. Reg, Sunil – Sunil

2

Obwohl unlink() unterstützt URLs (see here) jetzt, http: // nicht unterstützt wird: http wrapper information

einen Dateisystem-Pfad verwenden, um die Datei zu löschen.

0

unlink wird nicht funktionieren mit unlink('http://www.mysite.com/img1.jpg');

Verwendung anstelle unlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg'); // nimmt das aktuelle Verzeichnis oder

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

Es Dateiberechtigungen sein kann für diese issue.please zu überprüfen.

0

Geben Sie den relativen Pfad vom Ordner, in dem Bilder gespeichert sind, zur Datei an, in der Sie das Skript schreiben. Wenn Dateistruktur ist wie:

-your php file 
-images 
    -1.jpg 

then 

unlink(images/1.jpg); 

Oder kann es einige Ordner Erlaubnis Problem sein. Ihre Dateien befinden sich auf einem Server oder auf einem lokalen Host? Wenn es auf einem Server ist, dann gebe 755 Erlaubnis zum Bilderordner.

1

Verwendung Dateisystempfad,
ersten Pfad so definieren:

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

und überprüfen Datei vorhanden ist oder nicht, wenn vorhanden dann die Datei entkoppeln.

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

Wenn Sie entkoppeln in einem Linux- oder UNIX Sie sollten auch die Ergebnisse der is_writable (string $filename) überprüfen und wenn die Funktion false zurückgibt, sollten Sie die Dateiberechtigungen mit fileperms (string $filename) überprüfen.

Dateiberechtigungen sind übliche Probleme auf Webspaces, z. wenn Sie eine Datei per FTP mit einem FTP-Benutzer hochladen und der Webserver als ein anderer Benutzer ausgeführt wird.

Wenn dies das Problem ist, müssen Sie eine

chmod o do + rwd img1.jpg

oder

chmod 777 img1.jpg

zu grand schreiben (und löschen) Berechtigungen für andere Benutzer.