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-аутентификацию.

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

1 ответов


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

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

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

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

print_r(curl_getinfo($ch));

Edit: после комментариев это то, что вы ищете то, что отсутствует:

вам нужно установить опцию 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.