2011-01-05 7 views
9

Mam następujący kod PHP:localhost URL działa w przeglądarce, ale zwraca bool (false) dla PHP curl_exec

$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, $URL); 
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true); 
$html = curl_exec ($curl); 

echo $html; 

whith następujący wynik:

i to pomimo tego, że przeglądarka może bez problemu wyświetlać http://localhost/index.html. Używam serwera apache xampp na localhost.

Nie mogę określić, na czym polega problem. Każda pomoc byłaby bardzo cenna.

+0

Czy na pewno uruchamiasz ten kod z lokalnego hosta? – fire

+0

@fire Tak, uruchamiam kod na localhost. – tucson

+0

Spróbuj '127.0.0.1' zamiast' localhost'. Jeśli to działa, jest to problem z DNS. Jeśli to nie zadziała, jest jeszcze kilka innych rzeczy. Spróbuj sprawdzić nagłówki CURL, ustawiając ['CURLOPT_HEADER'] (http: //us2.php.net/curl_setopt) ... Ustaw także 'CURLOPT_FAILONERROR' na false dla tego sprawdzenia ... – ircmaxell

Odpowiedz

4

Powinieneś się upewnić, że Twój Apache słucha na właściwych interfejsach. Miałem ten problem raz na maszynie Vist: Apache (XAMP) słuchał tylko na IPv4, ale na Vista "localhost" domyślnie jest tłumaczony na adres IPv6.

Aby wyłączyć adres IPv6, edytuj plik % system32% \ drivers \ etc \ hosts i usuń wiersz :: 1.

0

cURL może konwertować żądanie do protokołu IPv6 za kulisami. Oprócz rozwiązania sugerowanego przez xrstf możesz po prostu spróbować użyć 127.0.0.1 zamiast localhost, aby wymusić połączenie IPv4.

0

Jedną z możliwych rzeczy jest problem z zaporą. Curl domyślnie próbuje użyć portu 1080, który prawdopodobnie nie jest otwarty na twoim lokalnym hoście/routerze/usługodawcy internetowym.

Jeśli to nie jest problem, a następnie spróbuj po curl wykonania, umieścić coś takiego:

echo curl_getinfo($ch) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>'; 

zobaczysz, co nie powiodło się podczas swojej curl wykonania. Więcej informacji: curl_getinfocurl_errnocurl_error

0

Spróbuj użyć

if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 
// (see : www.php.net/curl_error) 

Aby zobaczyć co się dzieje, mam nadzieję, że to pomaga

0

Może to być:

IPV6 problem z curl:

curl skonfigurowane za pomocą: włączono c-ares Włączony ipv6 system lokalny wyłączył IPv6. Proszę to sprawdzić.

Możesz również udostępnić plik hosta, aby uzyskać więcej informacji.

Powiązane problemy