Ich gehe davon aus, dass Sie es so gehandhabt wollen, das nicht mit Ihren error_reporting
und log_errors
Richtlinien nicht stört. Der einzige Weg, an den ich denken kann, ist ein custom error handler schreiben. Hier ist ein Beispiel aus der PHPMailer Bibliothek:
Error handler:
/**
* Reports an error number and string.
*
* @param int $errno The error number returned by PHP
* @param string $errmsg The error message returned by PHP
* @param string $errfile The file the error occurred in
* @param int $errline The line number the error occurred on
*/
protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0)
{
$notice = 'Connection failed.';
$this->setError(
$notice,
$errmsg,
(string) $errno
);
$this->edebug(
"$notice Error #$errno: $errmsg [$errfile line $errline]",
self::DEBUG_CONNECTION
);
}
Usage:
// Begin encrypted connection
set_error_handler([$this, 'errorHandler']);
$crypto_ok = stream_socket_enable_crypto(
$this->smtp_conn,
true,
$crypto_method
);
restore_error_handler();
Wenn nötig, gibt es immer zusätzliche Sachen Feinabstimmung entweder im set_error_handler()
Anruf und der Handler-Code selbst . Hier ist ein weiteres Beispiel aus Guzzle, die eine anonyme Funktion verwendet:
Error handler and Usage:
$errors = null;
set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
$errors[] = [
'message' => $msg,
'file' => $file,
'line' => $line
];
return true;
});
$resource = $callback();
restore_error_handler();
Sie können PHP-Warnung deaktivieren, indem Sie error_reporting (E_ERROR | E_PARSE); oder error_reporting (0); Sie müssen also kein @ -Zeichen verwenden. und mit curl können Sie etwas wie curl_getinfo ($ curl, CURLINFO_HTTP_CODE); –
Verwenden Sie [curl] (http://php.net/manual/en/book.curl.php) mit den Optionen "CURLOPT_HEADER" und "CURLOPT_RETURNTRANSFER". (Und vielleicht 'CURLOPT_NOBODY' je nachdem, was Sie wollen.) –
Werfen Sie einen Blick auf https://StackOverflow.com/Questions/1241728/Cani-Itry-Catch-a-Warnung – vzwick