Прокси-образы PHP ломаются в PHP 5 - PullRequest
0 голосов
/ 11 октября 2010

У меня есть это изображение прокси.В PHP 4 все работало нормально, но не то, что я обновился до 5, я получаю эту ошибку:

Предупреждение: curl_setopt () [function.curl-setopt]: CURLOPT_FOLLOWLOCATION не может быть активирован, когда включен safe_modeopen_basedir установлен в /path/to/proxy.php в строке 34

Вот строка 34:

curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);

Как это исправить?

ниже весь сценарий.

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

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Видимо это невозможно сделать . Вы должны обойти это, исследуя результирующие заголовки для заголовка Location, а затем извлекать их оттуда. Это связано с тем, что curl наивно будет следовать всем URL-адресам, отправляемым веб-сервером, включая URL-адреса file: //, которые имеют очевидные последствия для безопасности.

0 голосов
/ 11 октября 2010

Вы можете прочитать сообщение об ошибке и проверить safe_mode и open_basedir.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...