2010-07-20 14 views
6

Wir haben einen Teil des Legacy-Codes, der (ab) Aufrufe von fopen() an Ressourcen über HTTP verwendet: @fopen ('http://example.com').Folgen PHPs fopen 301 Weiterleitungen?

Wir möchten example.com auf einen anderen Host verschieben und dann 301 Permanent Moved senden. Wir sind jedoch nicht ganz sicher, ob @fopen() dem folgen wird. Erste Tests zeigen mir, dass es nicht so ist. Aber vielleicht vermisse ich ein Konfigurationsstück.

+1

Ich sehe Refactoring in Ihrer Zukunft! – Stephen

+0

Sicher. Diese Weiterleitung ist der erste Schritt in diesem Refactoring, eigentlich :) – berkes

Antwort

3

Seit Version 5.1.0 gibt es die max_redirects option, die den fopen HTTP-Wrapper die Location Umleitung folgen macht:

Die maximale Anzahl von Umleitungen zu folgen. Wert 1 oder weniger bedeutet, dass keine Weiterleitungen folgen.

Defaults bis 20.

Vielleicht möchten Sie es explizit setzen, falls Ihre Konfiguration dies deaktiviert. Ein Beispiel aus der Dokumentation geändert:

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