2009-05-21 14 views
1

Ich habe eine Datei, die eine URL öffnet und liest es und macht das Parsen. Nun, wenn diese URL dwon geht und meine Datei es nicht öffnen kann, dann was ich brauche ist, dass eine Fehlermeldung Mail generiert werden sollte, aber auf Terminal oder Konsole sollte keine Fehlermeldung angezeigt werden. wie kann ich das tun? Plz helfen !!Fehlerbehandlung in PHP

Antwort

2

Sie können immer etwas tun (ich bin vorausgesetzt, Sie file_get_contents verwenden)

$file = @fopen("abc.com","rb"); 
if(!$file) { 
    @mail(.......); 
    die(); 
} 
//rest of code. Else is not needed since script will die if hit if condition 
+0

das ist, was im tut, im statt @file_get_contents mit @fopen aber, was ich will, ist, dass Fehler noe auf Terminal/Konsole.By mit dieser Art von Code im immer Fehlermeldung auf dem Terminal angezeigt werden soll, wenn ich ausführen es dort. Ich will, dass kein Fehler msg shud auf termianl erscheinen. – developer

+0

"@" -Zeichen unterdrücken Fehlermeldungen, wahrscheinlich eine andere Codezeile, die das Echo des Fehlers verursacht. Sie sollten einen Code-Schnipsel posten, sonst kann es schwierig sein, einen guten Ratschlag zu geben. – Alekc

+0

$ flag = 0; $ file = @fopen ("abc.com", "rb") oder $ flag = 1; if ($ flag == 1) {mail (.......); sterben(); } else {..........} Dieser Code generiert die Mail so, wie ich es möchte, aber das Problem ist, dass ich diesen Fehler auch auf Terminal/Konsole bekomme, was ich nicht will. Was ich will ist dass kein Fehler auf Terminal/Konsole während der Ausführung dieser Datei erscheinen sollte, auch wenn die URL nicht erreichbar ist .... Ich hoffe Ihr versteht was ich sage ... – developer

0
if (!$content = file_get_contents('http://example.org')) { 
    mail(...); 
} 
1

Verwenden curl statt, wenn Sie Dateien über das Netzwerk abrufen. Es hat eine integrierte Fehlerbehandlung und es wird Ihnen den aufgetretenen Fehler mitteilen. Die Verwendung von file_get_contents sagt Ihnen nicht, was schief gelaufen ist, es folgt auch nicht den Weiterleitungen.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/file'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($ch); 
if ($result == false) { 
    $errorInfo = curl_errno($ch).' '.curl_error($ch); 
    mail(...) 
} else { 
    //Process file, $result contains file contents 
}