Fehlermeldungen unterdrücken

Hi,
gibt es eine elegante Fehlermeldungen vor allem von CURL abfragen zu unterdrücken. Ich habe ja einige Module und die APIs sind leider nicht immer responsive wie mal sich das wünscht und somit entstehen Fehler im Log die eher stören als das sie helfen.

Eine Idee war error_reporting(0) einzubauen. Ich kann aber in der Doku nichts finden wo man das machen sollte und an sich will ich ja nur die Fehler von CURL unterdrücken.

Du kannst meldungen mit @ unterdrücken.

@func(1, 2, 3)

Danke - auch in Modulen?

Das @ ist von PHP und hat ja erstmal nichts damit zu tun.

1 Like

Gar nicht erst damit anfangen, da der @ Operand zu PHP 8 abgeschafft wird.
Gerade bei curl brauchst du das eigentlich auch nicht. Da kannst du z.b. auf false bei curl_exex und den http Code von curl_getinfo() prüfen.
Michael

1 Like

Nall-chan war natürlich schneller :slight_smile: .

Ich nutze zum Bilder herunter laden inzwischen oft folgende Funktion, da die „normalen“ PHP Funktionen auf viele Webseiten nicht mehr zum Ziel führen.

Dort werden diverse CURL Parameter gesetzt, inkl. Timeouts und eventuelle Fehler abgefangen.

Vielleicht kannst du das für dich anpassen.

function readURLwriteLOCAL($remoteImage, $localImage) {
    $error = false;
    $ch = curl_init($remoteImage);
    if ($ch === false) { // fehlgeschlagen
        return false;
    } else { // erfolgreich, curl handle
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36");;
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
        curl_setopt($ch, CURLOPT_TIMEOUT, 20); //timeout in seconds
        $remoteImage = curl_exec($ch);
        if (curl_errno($ch)) { // curl Fehler aufgetreten
           echo curl_error($ch);
           $error = true;
         }
        curl_close($ch);
        if (!$error) { // curl read erfolgreich, Datei schreiben
            $result = file_put_contents($localImage, $remoteImage);
            if ($result === false) {
               echo "Fehler beim Schreiben: ".$localImage;
            return false;
            } else {
                return true;
            }
        }
    }
}
1 Like