2010-10-11 8 views
0

J'ai ce proxy d'image. Il a bien fonctionné en PHP 4, mais pas que je l'ai mis à jour à 5 je reçois cette erreur:Les ruptures de proxy d'image PHP en PHP 5

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /path/to/proxy.php on line 34

Voici est la ligne 34:

curl_setopt($session, CURLOPT_FOLLOWLOCATION, true); 

Comment puis-je résoudre ce problème?

ci-dessous est l'ensemble du script.

$url = ($_POST['url']) ? $_POST['url'] : $_GET['url']; 
$headers = ($_POST['headers']) ? $_POST['headers'] : $_GET['headers']; 
$mimeType =($_POST['mimeType']) ? $_POST['mimeType'] : $_GET['mimeType']; 


//Start the Curl session 
$session = curl_init($url); 

// If it's a POST, put the POST data in the body 
if ($_POST['url']) { 
    $postvars = ''; 
    while ($element = current($_POST)) { 
     $postvars .= key($_POST).'='.$element.'&'; 
     next($_POST); 
    } 
    curl_setopt ($session, CURLOPT_POST, true); 
    curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars); 
} 


// Don't return HTTP headers. Do return the contents of the call 
curl_setopt($session, CURLOPT_HEADER, ($headers == "true") ? true : false); 

curl_setopt($session, CURLOPT_FOLLOWLOCATION, true); 
//curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

// Make the call 
$response = curl_exec($session); 


if ($mimeType != "") 
{ 
    // The web service returns XML. Set the Content-Type appropriately 
    #header("Content-Type: ".$mimeType); 

    //Allmow caching 
    #header('Cache-Control: public'); 

} 

echo $response; 

curl_close($session); 

Répondre

1

Apparemment it can't be done. Vous devez contourner ce problème en examinant les en-têtes qui en résultent pour un en-tête Location, puis aller chercher à partir de là. C'est parce que curl suivra naïvement toutes les URL envoyées par un serveur web, y compris les URL file: //, qui ont des ramifications de sécurité évidentes.

+0

Merci J'ai ouvert mon fournisseur d'hébergement open_basedir. –

0

Vous pouvez lire le message d'erreur et vérifiez safe_mode et open_basedir.