Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- php Fehlerbehandlung (http://www.informatikerboard.de/board/thread.php?threadid=1535)
Geschrieben von InformaTiger am 28.06.2013 um 09:45:
php Fehlerbehandlung
Hallo,
ich möchte auf meiner Website die Funktion glob() zum aufrufen des Verzeichnisinhaltes verwenden und habe das auch hinbekommen. Nun wenn das Verzeichnis leer ist sollte er mir einen bestimmten Text ausgeben. Das wollte ich ungefähr so machen:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
//...
try
{
foreach (glob($search) as $path)
{
//Liest aus der Datei das Erstelldatum heraus
$docsByCreateTime[filectime($path)] = $path;
}
}
catch (Exception $e)
{
echo "Text der ausgegeben werden soll";
return; // Methode soll danach beendet werden
}
//...
|
|
Nun habe ich, aber das Problem, dass immer die
Fehlermeldung trotzdem kommt.
Ich habe leider keine Ahnung was ich falsch gemacht habe.
Lg
InformaTiger
Geschrieben von eulerscheZahl am 28.06.2013 um 14:25:
Ich bin in php leider recht ahnungslos - habe gerade auch keine Zeit das zu testen (vielleicht heute Abend), aber:
foreach() mit einem leeren Array sollte eigentlich kein Problem darstellen - es wird nur eben einfach nichts gemacht (also auch keine Exception). Beziehen sich die Zeilenangaben in der Fehlermeldung überhaupt auf diesen Teil? Entspricht Zeile 5 der Zeile 62?
Versuche mal, die Größe des Arrays, den dir glob() zurückgibt, auf >0 zu testen.
Geschrieben von Airblader am 30.06.2013 um 13:26:
Edit:
Wenn man nach "glob invalid argument foreach" (o.ä.) sucht[1], dann findet man dazu einiges. Zum Einen könnte dein Argument für glob() falsch sein, zum anderen könnte dich hier ein Problem treffen, das in der
glob-Dokumentation im "Note"-Teil unter "Return Values" beschrieben ist. Auf jeden Fall gilt es, beide Dinge mal zu überprüfen.
Eine mögliche Lösung könnte also evtl. so aussehen:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
$content = glob($search);
if (!is_array($content) || count($content) == 0) {
return false;
}
foreach ($content as $path) {
// ...
}
|
|
[1] InformaTiger, du solltest dir sowas übrigens unbedingt angewöhnen!
Geschrieben von InformaTiger am 07.07.2013 um 21:04:
Ich habe den Fehler jetzt behoben... es war einfacher als ich dachte.
@Airblader: Jedenfalls habe ich mir das googeln, jetzt angewöhnt.
Danke für die Hilfe.
Lg
InformaTiger
Forensoftware: Burning Board, entwickelt von WoltLab GmbH