HTTP context options
HTTP context option listing
Description
Context options for http:// and https:// transports.
Options
methodstringGET,POST, or any other HTTP method supported by the remote server.Defaults to
GET.headerarrayorstringAdditional headers to be sent during request. Values in this option will override other values (such as
User-agent:,Host:, andAuthentication:), even when followingLocation:redirects. Thus it is not recommended to set aHost:header, iffollow_locationis enabled.String value should be
Key: valuepairs delimited by\r\n, e.g."Content-Type: application/json\r\nConnection: close". Array value should be a list ofKey: valuepairs, e.g.["Content-Type: application/json", "Connection: close"].user_agentstringValue to send with
User-Agent:header. This value will only be used if user-agent is not specified in theheadercontext option above.By default the user_agent Ini setting is used.
contentstringAdditional data to be sent after the headers. Typically used with POST or PUT requests.
proxystringURI specifying address of proxy server (e.g.
tcp://proxy.example.com:5100).request_fulluriboolWhen set to true, the entire URI will be used when constructing the request (e.g.
GET http://www.example.com/path/to/file.html HTTP/1.0). While this is a non-standard request format, some proxy servers require it.Defaults to false.
follow_locationintFollow
Locationheader redirects. Set to0to disable.When this option is not set, redirects are only followed for the
300,301,302,303,307and308response codes. Setting it to1is not equivalent: any response carrying aLocationheader is then followed, whatever its response code.max_redirectsintThe max number of redirects to follow. Value
1or less means that no redirects are followed.Defaults to
20.protocol_versionfloatHTTP protocol version.
Defaults to
1.1as of PHP 8.0.0; prior to that version the default was1.0.timeoutfloatRead timeout in seconds, specified by a
float(e.g.10.5).By default the default_socket_timeout Ini setting is used.
ignore_errorsboolFetch the content even on failure status codes.
Defaults to false.
uri_parser_classstringornullThe class to use for parsing URIs. When null, the legacy behavior based on
parse_url()is used. Accepted values areUri\Rfc3986\Uri(RFC 3986 compliant parser) andUri\WhatWg\Url(WHATWG URL Standard parser). Custom userland implementations are not supported.Defaults to null.
Changelog
| Version | Description |
|---|---|
| 8.5.0 | The uri_parser_class option was added. |
Examples
Fetch a page and send POST data
<?php
$postdata = http_build_query(
[
'var1' => 'some content',
'var2' => 'doh',
]
);
$opts = [
'http' => [
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata,
]
];
$context = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);
?>Ignore redirects but fetch headers and content
<?php
$url = "http://www.example.org/header.php";
$opts = [
'http' => [
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1',
]
];
$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);
// header information as well as meta data
// about the stream
var_dump(stream_get_meta_data($stream));
// actual data at $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>Notes
Additional context options may be supported by the underlying transport For http:// streams, refer to context options for the tcp:// transport. For https:// streams, refer to context options for the ssl:// transport.
When this stream wrapper follows a redirect, the wrapper_data returned by stream_get_meta_data() might not necessarily contain the HTTP status line that actually applies to the content data at index 0.
array (
'wrapper_data' =>
array (
0 => 'HTTP/1.0 301 Moved Permanently',
1 => 'Cache-Control: no-cache',
2 => 'Connection: close',
3 => 'Location: http://example.com/foo.jpg',
4 => 'HTTP/1.1 200 OK',
...The first request returned a 301 (permanent redirect), so the stream wrapper automatically followed the redirect to get a 200 response (index = 4).