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.