Download the contents of a URL in PHP even if it returns a 404

前端 未结 4 1028
半阙折子戏
半阙折子戏 2020-12-05 11:06

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 answe

4条回答
  •  抹茶落季
    2020-12-05 11:58

    You have to configure the stream wrapper to ignore errors:

    ignore_errors boolean Fetch the content even on failure status codes. Defaults to FALSE

    In other words, do

    echo file_get_contents(
        'http://stackoverflow.com/foo/bar',
        false,
        stream_context_create([
            'http' => [
                'ignore_errors' => true,
            ],
        ])
    );
    

    and you will get the 404 page.

    If you want this to be the default behavior for HTTP streams, use

    stream_context_set_default(
        array('http' => array(
            'ignore_errors' => true)
        )
    );
    

    Any calls using the HTTP stream wrapper will use these settings then, e.g. you can simply do

    echo file_get_contents('http://stackoverflow.com/foo/bar');
    

    If you also want to get the response header, just do

    print_r($http_response_header);
    

    after the call. The variable is (re-)populated after each call with a http stream wrapper.

提交回复
热议问题