Fehlermeldungen unterdrücken
Lily
- php
0 Dieter Raber0 Gunnar Bittersmann0 Lily0 Daniel0 Johannes Zeller
Hi,
ich habe ein Script gemacht, bei dem ein Verzeichnis per klick auf einen Button gelöscht werden kann.
Wenn das Verzeichnis nun aber nicht existiert, dann kommt diese unschöne Meldung:
Warning: rmdir() [function.rmdir]: Directory not empty in C:\Programme\xampp\htdocs\enbit-server\list.php on line 20
Ist es möglich, diese eine Meldung zu unterdrücken?
Danke für eure Hilfe!
Hallo Lily,
Fehlermeldungen zu unterdruecken ist in der Regel eine sehr schlechte Idee. Besser waere es, du uberpruefst vor dem Loeschen einer Datei/eines Verzeichnisses deren/dessen Existenz z. B. mit is_dir() oder is_file().
Gruß,
Dieter
Hello out there!
[…] ein Verzeichnis per klick auf einen Button gelöscht werden kann.
Wenn das Verzeichnis nun aber nicht existiert, dann kommt diese unschöne Meldung: […]
Ist es möglich, diese eine Meldung zu unterdrücken?
Warum sorgst dafür, dass die Ursache der Meldung nicht auftritt? Frage vor dem Löschen ab, ob das Verzeichnis existiert!
See ya up the road,
Gunnar
Hallo Gunnar.
[…] ein Verzeichnis per klick auf einen Button gelöscht werden kann.
Wenn das Verzeichnis nun aber nicht existiert, dann kommt diese unschöne Meldung: […]
Ist es möglich, diese eine Meldung zu unterdrücken?Warum sorgst dafür, dass die Ursache der Meldung nicht auftritt? Frage vor dem Löschen ab, ob das Verzeichnis existiert!
Tut es hier doch, es ist lediglich nicht leer, weshalb „rmdir“ nicht funktioniert. Also entweder erst kontrollieren, was im Verzeichnis liegt oder „rm -r“ über system() aufrufen.
Einen schönen Dienstag noch.
Gruß, Mathias
JA ihr habt recht, dann muss ich aber endlich die Frage stellen die ich schon seit längerem habe:
Das ist mein Code:
//Backupordner des Kunden löschen
$sql = "SELECT k.backupDirectory FROM kunden WHERE k.id='".$_GET['delete']."'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$rmdir = $row['backupDirectory']."/";
if (is_dir($rmdir)) {
rmdir ($rmdir);
}
Zuerst definiere ich $sql, $resultm $row und will dann mit $rmdir = $row['backupDirectory']."/"; die Daten von der Datenbank holen.
Allerdings klappt das mit $row['backupDirectory'] nicht. Wenn ich es in eine while Schleife machen würde, dann geht es. Diese brauche ich aber in diesem Fall nicht, das es nur ein $row['backupDirectory'] mit der id [..] gibt.
Warum geht das nicht? Funktioniert mysql_fetch_assoc nur mir Schleifen? Wie soll ich die Daten sonst aus der Datenbank holen?
Wäre super wenn mir da noch jemand helfen könnte!
echo $begrüßung;
Allerdings klappt das [...] nicht.
Warum geht das nicht?
"Klappt nicht", "geht nicht", "funktioniert nicht" und dergleichen sind keine Fehlerbeschreibung. Bitte bemühe dich, genauer zu beobachten und zu beschreiben, was du haben möchtest und was stattdessen passiert. Die Helfenden Rätsel raten zu lassen bringt deinem Anliegen nicht viel.
Kontrolliere bitte auch den Inhalt der Variablen, mit denen du arbeitest. Am besten eignet sich dafür var_dump(), weil diese Funktion sowohl Inhalt als auch den Typ einer Variablen anzeigt.
Funktioniert mysql_fetch_assoc nur mir Schleifen?
mysql_fetch_assoc() arbeitet völlig unabhängig von irgendwelchen Programmstrukturen, also auch ohne Schleife.
echo "$verabschiedung $name";
Ahoi Lily,
SELECT k.backupDirectory FROM kunden WHERE k.id='1'
ich glaube nicht das die abfrage so ein ergebniss liefert. IMHO müsste
die tabelle kunden als alias k bekommen, anstatt "k." "kunden." stehen
oder "k." ganz weg.
MfG
Ahoi Lily,
Wenn das Verzeichnis nun aber nicht existiert, dann kommt diese unschöne Meldung:
Warning: rmdir() [function.rmdir]: Directory not empty in C:\Programme\xampp\htdocs\enbit-server\list.php on line 20
Also ich weiss ja nicht. aber: "not empty" würde ich als "ist nicht
leer" übersetzten. rmdir() darf aber nur leere verzeichnise
löschen. http://de2.php.net/manual/de/function.rmdir.php
MfG
Hallo Lily,
Ist es möglich, diese eine Meldung zu unterdrücken?
es ist wirklich empfehlenswerter den Grund für das Auftreten des Fehlers zu beheben, als die Meldung einfach zu unterdrücken. Deshalb nur der Vollständigkeit wegen:
Es gibt in der Tat Möglichkeiten, Fehlermeldungen zu unterdrücken. Die einfachste und meiner Meinung nach unsauberste ist es vor den Funktionsaufruf ein @ zu setzen (@rmdir($verzeichnis);
). Dadurch werden nur die Fehlermeldungen dieser Funktion unterdrückt.
Eine bessere Variante ist es über die Konfigurationseinstellung error_reporting die Anzeige von Fehlermeldungen zu verhindern. In Produktivumgebungen wird das gerne gemacht, damit Besucher nicht unbeabsichtigt Details über Server-Interna wie Verzeichnisstruktur, etc. erhalten. Denen kann dann stattdessen eine generische Fehlermeldung präsentiert werden. In diesem Fall werden die Fehler dann auch normalerweise in eine Log-Datei geschrieben, die sich ein guter Admin regelmäßig ansieht.
Ich weise allerdings nochmals daraufhin, dass ich das in deinem Fall nicht als Lösung ansehe. Wenn während der Entwicklung wiederkehrende Fehlermeldungen auftreten, solltest du den Grund suchen und beheben.
Schöne Grüße,
Johannes