Using PHP, how can I read a server's error page?
I want to read a server's reply for a certain request, modify it to my needs, and send it to开发者_如何学Go the site visitor. get_headers() works perfectly for the headers, but if the requested file is missing (404), and that's exactly what I want to use, get_file_contents(), readfile() and other functions I've tried all break with the warning/error that the file is missing instead of reading the replied stream into a variable.
So what I want is a function similar to get_headers() only for the rest of the data, like a get_data() that doesn't cancel. Is there such a thing?
Thanks for reading.
Use curl_exec
. It will always return the body unless the CURLOPT_FAILONERROR
option is set to TRUE
.
Here's an example:
$url = 'http://www.example.com/thisrequestwillerror';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
// This is the default, but just making sure...
curl_setopt($curl, CURLOPT_FAILONERROR, false);
// Execute and return as a string
$str = curl_exec($curl);
curl_close($curl);
// Dump the response body
var_dump($str);
Wrap this in a function and use it wherever you need to get an HTTP response body in your application.
精彩评论