PHP 7.2.0 Release Candidate 2 Released

گزینه‌های متن HTTP

گزینه‌های متن HTTPفهرست گزینه‌های متن HTTP


گزینه‌های متن برای http:// و https:// .


method string

GET٬ POST٬ یا هر متد دیگر HTTP پشتیبانی شده در سرور دور.

مقدار پیشفرض GET.

header string

سرآیند‌های اضافی در طول درخواست. مقادیر در این گزینه هر مقدار دیگری را بازنویسی خواهد کرد (مانند User-agent:٬ Host:٬ و Authentication:).

user_agent string

مقدار فرستاده شده با سرآیند User-Agent:. این مقدار استفاده خواهد شد اگر user-agent در گزینه متن header بالا تعیین نشده باشد.

بطور پیشفرض تنظیمات php.ini برای user_agent استفاده می‌شود.

content string

اطلاعات اضافی پس از سرآیند فرستاده خواهد شد. عموما با درخواستذهای POST یا PUT استفاده خواهد شد.

proxy string

URI تعیین کننده آدرس پروکسی سرور. (مانند tcp://

request_fulluri boolean

زمانی که برابر با TRUE باشد تمام URI هنگام ساختن درخواست استفاده خواهد شد. (مانند GET HTTP/1.0). در حالی که این درخواست استاندارد نیست بعضی سرورهای پروکسی به آن نیاز دارند.

مقدار پیشفرض FALSE.

max_redirects integer

تعداد بیشترین تغییر مسیرهای پی در پی. مقدار 1 یا کمتر اجازه تغییر مسیرهای پی در پی را نخواهد داد.

بصورت پیشفرض 20.

protocol_version float

نسخه پروتکل HTTP.

مقدار پیشفرض 1.0.


PHP پیش از 5.3.0 کدگشایی انتقال chunked را انجام نمی‌داد. اگر مقدار 1.1 باشد شما باید مطابق با1.1 عمل کنید.

timeout float

ثانیه‌های زمان سپری شده را به ثانبه می‌خواند که توسط یک float مشخص می‌شود (مانند 10.5).

بصورت پیشفرض تنظیمات php.ini برای default_socket_timeout استفاده می‌شود.

ignore_errors boolean

دریافت متن حتی برای کدهای خطا.

مقدار پیشفرض FALSE


Version Description
5.3.0 ignore_errors اضافه شد.
5.2.10 ignore_errors اضافه شد.
5.2.10 header می‌تواند بصورت array اندیس‌دار عددی باشد.
5.2.1 timeout اضافه شد.
5.1.0 پروکسی HTTPS از طریق پروکسی HTTP اضافه شد.
5.1.0 max_redirects اضافه شد.
5.1.0 protocol_version اضافه شد.


Example #1 دریافت یک صفحه و ارسال اطلاعات POST


'var1' => 'some content',
'var2' => 'doh'

$opts = array('http' =>
'method'  => 'POST',
'header'  => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata

$context  stream_context_create($opts);

$result file_get_contents(''false$context);


Example #2 نادیده گرفتن تغییر مسیر ولی گرفتن fetch header و محتوا



$opts = array(
'http' => array('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

// actual data at $url


Note: گزینه‌های متن جریان زیرین سوکت
گزینه‌های متن اضافی ممکن است توسط زیرساختار انتقال برای جریان‌های http:// ارجاع دهنده به گزینه‌های متن برای انتقال tcp:// استفاده شود. برای جریان‌های https:// به گزینه‌های متن برای انتقال ssl:// ارجاع کنید.

add a note add a note

User Contributed Notes 6 notes

3 years ago
Note that if you set the protocol_version option to 1.1 and the server you are requesting from is configured to use keep-alive connections, the function (fopen, file_get_contents, etc.) will "be slow" and take a long time to complete. This is a feature of the HTTP 1.1 protocol you are unlikely to use with stream contexts in PHP.

Simply add a "Connection: close" header to the request to eliminate the keep-alive timeout:

// php 5.4 : array syntax and header option with array value
$data = file_get_contents('', null, stream_context_create([
'http' => [
'protocol_version' => 1.1,
'header'           => [
'Connection: close',
2 years ago
Remember to match content with Content-type:


= array(
'var1' => 'some content',
'var2' => 'doh'

$opts = array('http' =>
'method'  => 'POST',
'header'  => 'Content-type: application/json'// here...
'content' => json_encode($data// and here.

. . .

vchampion at gmail dot com
4 years ago
If you use the proxy server and encounter an error "fopen( failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request" note that in many situations you need also set the parameter "request_fulluri" to "true" in your stream options. Without this option the php script sends the empty request to the server as "GET / HTTP/0.0" and the proxy server replies to it with the "HTTP 400" error.

For example (working sample):
= stream_context_create(Array("http" => Array("method"  => "GET",
"timeout" => 20,
"header"  => "User-agent: Myagent",
"proxy"   => "tcp://my-proxy.localnet:3128",
'request_fulluri' => True /* without this option we get an HTTP error! */

if (
$fp = fopen("", 'r', false, $stream) ) {
"well done";

P>S> PHP 5.3.17
gourav sarkar
6 years ago
watch your case when using methods (POST and GET) must be always uppercase. in case of you write it in lower case it wont work.
3 years ago
I had quite a bit of trouble trying to make a request with fopen through a proxy to a secure url.  I kept getting a 400 Bad Request back from the remote host.  It was receiving the proxy url as the SNI host.  In order to get around this I had to explicity set the SNI host to the domain I was trying to reach.  It's apparently the issue outlined in this bug:

= parse_url($file, PHP_URL_HOST);
$proxy_string = "tcp://" . WP_PROXY_HOST  . ":" . WP_PROXY_PORT;
$opts = array(
'http' => array( 'proxy' => $proxy_string ),
'ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => $domain));
$context = stream_context_create($opts);
$handle = fopen( $file, 'r', false, $context );
ywarnier at beeznest dot org
1 month ago
Note that setting request_fulluri to true will *change* the value of $_SERVER['REQUEST_URI] on the receiving end (from /abc.php to
To Top