Napisałem ten prosty fragment kodu:
$ch = curl_init();
//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);
W moim przypadku $website_content
jest jak false
. Czy ktoś może coś zasugerować / poradzić, co może być nie tak?
curl_error()
ze szczegółami błędów i opublikuj je tutaj, proszę.curl_error()
ujawnił?Odpowiedzi:
Sprawdzanie i obsługa błędów to przyjaciel programisty. Sprawdź wartości zwracane przez inicjowanie i wykonywanie funkcji cURL.
curl_error()
icurl_errno()
będzie zawierał dalsze informacje w przypadku awarii:* Te
curl_init()
ręczne stany:Zauważyłem, że funkcja zwraca się,
FALSE
gdy używasz jej$url
parametru, a domeny nie można rozwiązać. Jeśli parametr nie jest używany, funkcja może nigdy nie zwrócićFALSE
. Zawsze jednak sprawdź to, ponieważ instrukcja nie określa jasno, czym właściwie są „błędy”.źródło
curl_exec
zwrocie FALSE. - Curl Verbose Mode w przykładzie PHPW moim przypadku muszę ustawić
VERIFYHOST
iVERIFYPEER
nafalse
coś takiego:przed wezwaniem
curl_exec($ch)
.Ponieważ pracuję między dwoma środowiskami programistycznymi z własnymi certyfikatami. Z ważnych certyfikatów nie ma potrzeby ustawiania
VERIFYHOST
iVERIFYPEER
dofalse
ponieważcurl_exec($ch)
metoda zadziała i zwróci odpowiedź można oczekiwać.źródło
Zdarzyło mi się to wczoraj iw moim przypadku było tak, ponieważ postępowałem zgodnie z instrukcją PDF, aby opracować jakiś moduł do komunikacji z API i podczas kopiowania linku bezpośrednio z instrukcji, z jakiegoś dziwnego powodu,
hyphen
ze skopiowanego linku był w innym kodowanie i dlategocurl_exec()
zawsze zwracał,false
ponieważ nie mógł skomunikować się z serwerem.Zajęło mi kilka godzin, zanim w końcu zrozumiałem różnicę w postaciach poniżej:
Za każdym razem, gdy próbowałem uzyskać dostęp do łącza bezpośrednio z przeglądarki, konwertowało to na coś podobnego
https://www.xn--eexample-0m3d.com/api
.Może ci się wydawać, że są równe, ale jeśli sprawdzisz kodowanie
hyphens
tutaj , zobaczysz, że pierwszyhyphen
to znaki Unicode U + 2010, a drugi to U + 002D .Mam nadzieję, że to komuś pomoże.
źródło