PHP-Warning bei unlink()

PHP-Warning bei unlink()

am 11.07.2006 10:49:37 von Martin Nadoll

Hallo,

ich lösche Bilder vom Server mittels unlink():

$imgPfad="/home/folder/images/";
unlink($imgPfad . $img);

Das Bild wird wie gewünscht gelöscht, auf der Seite erscheint aber ein
PHP-Warning:
Warning: unlink(/home/folder/images/): Is a directory in
/home/folder/admin/script.php on line 88

selbst nach @unlink($imgPfad . $img); erscheint die Meldung.

Hat hier jemand eine Erklärung dafür?

Danke für jede Hilfe,
Martin Nadoll

Re: PHP-Warning bei unlink()

am 11.07.2006 11:45:16 von Ulf Kadner

Martin Nadoll wrote:
> ich lösche Bilder vom Server mittels unlink():
>
> $imgPfad="/home/folder/images/";
> unlink($imgPfad . $img);
>
> Das Bild wird wie gewünscht gelöscht, auf der Seite erscheint aber ein
> PHP-Warning:
> Warning: unlink(/home/folder/images/): Is a directory in
> /home/folder/admin/script.php on line 88
>
> selbst nach @unlink($imgPfad . $img); erscheint die Meldung.
>
> Hat hier jemand eine Erklärung dafür?

Das Manual. Wie meist!
http://www.php.net/manual/en/function.unlink.php

MfG, Ulf

Re: PHP-Warning bei unlink()

am 11.07.2006 12:36:26 von Ulf Kadner

Ulf Kadner wrote:

> Martin Nadoll wrote:
>> $imgPfad="/home/folder/images/";
>> unlink($imgPfad . $img);
>>
>> Warning: unlink(/home/folder/images/): Is a directory in
>> /home/folder/admin/script.php on line 88
>
> Das Manual. Wie meist!
> http://www.php.net/manual/en/function.unlink.php

Ist wohl etwas zu kurz gefast.

Das was zum Fehler führt ist die Tatsache, das Du keine Datei, sondern
ein Verzeichnis zu löschen versuchst.

U.U ist $image in diesem Fall leer, da Dir sonst nicht die Fehlermeldung
angezeigt würde das Du versuchst ein Verzeichnis zu löschen.

Also muste vorher prüfen ob Das was Du da löschen willst auch als Datei
existert. (Minimal mit !empty($img))

MfG, Ulf

Re: PHP-Warning bei unlink()

am 11.07.2006 12:46:01 von Gregor Kofler

Ulf Kadner meinte:
> Ulf Kadner wrote:

> Also muste vorher prüfen ob Das was Du da löschen willst auch als Datei
> existert. (Minimal mit !empty($img))

file_exists() würde ich hier als die angebrachtere Lösung sehen.
unlink() "kapsle" ich immer in eine file_exists()-Bedingung.

Gruß, Gregor



--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: PHP-Warning bei unlink()

am 11.07.2006 13:21:14 von Ulf Kadner

Gregor Kofler wrote:

> file_exists() würde ich hier als die angebrachtere Lösung sehen.

Das kommt drauf an. Es gibt sicher Programmlogik die diese Prüfung nicht
notwendiger Weise erforderlich macht. Das wird wohl von Fall zu Fall
differieren.

Wenn ich 100 Dateien löschen will ist das zusätzliche file_exists fuer
jede Datei doch schon erheblich in der Preformance sichtbar.

Ich würde sagen je nach Notwendigkeit sollte man den entsprechenden
Prüfalgo verwenden/bauen. Ich würde mich da nicht auch eine strikte
file_exists-Verwendung festlegen.

MfG, Ulf

Re: PHP-Warning bei unlink()

am 13.07.2006 12:20:30 von Thomas Dartsch

"Ulf Kadner" schrieb

> Das kommt drauf an. Es gibt sicher Programmlogik die diese Prüfung nicht
> notwendiger Weise erforderlich macht. Das wird wohl von Fall zu Fall
> differieren.

Der Threadstarter sucht aber genau nach einer solchen Lösung, um eine ggf.
auftauchende PHP-Warnung nicht zu erhalten.
Dazu ist file_exist() wohl die einfachste Möglichkeit. Eben um die Existenz
der zu löschenden Datei wirklich zu verifizieren.
Das damit ein Performanceverlust einhergeht ist ganz sicher richtig, aber
zumindest im Fall seiner Fragestellung unrelevant.

t.d

Re: PHP-Warning bei unlink()

am 13.07.2006 12:42:00 von Detlef Sax

On Tue, 11 Jul 2006 12:46:01 +0200, Gregor Kofler wrote:
[...]
> file_exists() würde ich hier als die angebrachtere Lösung sehen.

is_file()

Detlef