Подтвердить что ты не робот

PHP CURL ничего не возвращает

function ParseUrl($URL)
{
    $crl = curl_init();
    curl_setopt ($crl, CURLOPT_URL, $URL);
    curl_setopt ($crl, CURLOPT_PORT, 8086);
    curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass");
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5);
    $ret = curl_exec($crl);
    curl_close($crl);
    return $ret;
}

echo ParseUrl('http://xxx.me/serverinfo');

Приведенный выше код просто ничего не возвращает. Страница, которую я пытаюсь получить с помощью curl, использует проверку подлинности HTTP.

Я пропустил что-то простое или что?

4b9b3361

Ответ 1

Начните с этого и посмотрите, что получилось, и после этого было бы довольно очевидно, в чем проблема:

Проверьте, была ли ошибка с запросом после curl_exec:

if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}

Это даст вам достаточно информации, чтобы узнать, была ли ошибка с запросом. Если ошибки не было, вы можете проверить запрос, отправленный после curl_exec, чтобы вы могли дважды проверить, что все отправленное на месте:

print_r(curl_getinfo($ch));

Изменить: после комментариев это то, что вы ищете, чего не хватает:

Вам нужно установить опцию CURLOPT_HTTPAUTH.

Цитата из php.net по теме:

Метод аутентификации HTTP использовать. Возможны следующие варианты: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY и CURLAUTH_ANYSAFE.

Побитовое | (или) может быть используется для объединения нескольких методов. Если это будет сделано, cURL опросит сервер, чтобы узнать, какие методы он поддерживает и выберите лучший.

CURLAUTH_ANY - псевдоним для CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE является псевдонимом для CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.