Будут ли PHP открыты после 301 переадресации? - PullRequest
7 голосов
/ 20 июля 2010

У нас есть унаследованный код, который (ab) использует fopen() вызовы ресурсов по HTTP:

@fopen('http://example.com')

Мы хотим переместить example.com на другой хост и затем отправить «301 Permanently Moved»"Однако мы не совсем уверены, что @fopen() последует за этим.

Первоначальные тесты показывают, что это не так.Но, возможно, я скучаю по какой-то части конфигурации.

1 Ответ

5 голосов
/ 20 июля 2010

Начиная с версии 5.1.0, есть опция max_redirects , которая заставляет обернутую HTTP-оболочку следовать перенаправлению Location:

Максимальное число перенаправлений, которым следует следовать.Значение 1 или меньше означает, что перенаправления не выполняются.

По умолчанию 20.

Возможно, вы захотите установить его явно, если ваш конфиг отключает это.Пример, измененный из документов:

<?php

$url = 'http://www.example.com/';

$opts = array(
       'http' => array('method' => 'GET',
                       'max_redirects' => '20')
       );

$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);
?>
...