I want to download the contents of a URL using PHP, even if the HTTP response code is 404. file_get_contents
will error out, and I wasn't able to find an answer using Google. How can I do this?
相关问题
- Views base64 encoded blob in HTML with PHP
- Laravel Option Select - Default Issue
- PHP Recursively File Folder Scan Sorted by Modific
- Can php detect if javascript is on or not?
- Using similar_text and strpos together
You have to configure the stream wrapper to ignore errors:
In other words, do
and you will get the 404 page.
If you want this to be the default behavior for HTTP streams, use
Any calls using the HTTP stream wrapper will use these settings then, e.g. you can simply do
If you also want to get the response header, just do
after the call. The variable is (re-)populated after each call with a http stream wrapper.
By default file_get_contents only returns the content of HTTP 200 responses.
With curl you get the headers and the content separately.
As of PHP 5.0, you can also specify a context for
file_get_contents
, allowing you to do it without relying on url (See Gordon's answer).Step 1: check the return code:
$content = file_get_contents("websitelink"); if($content === FALSE) { // handle error here... }
Step 2: suppress the warning by putting an error control operator (i.e.
@
) in front of the call to file_get_contents():$content = @file_get_contents($site);
Use cURL instead. It allows much greater control, and will let you read any content retrieved and the status code.