

PHP: curl_setopt nefunguje na localhostu
Mám kód:
$conn = curl_init();
curl_setopt($conn, CURLOPT_URL, $url);
curl_setopt($conn, CURLOPT_HEADER, 0);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
$return = ((array) (json_decode(curl_exec($conn))));
Tento kód na serveru funguje bez problémů. Já jsem ovšem dostala za úkol aplikaci upravit a u mne na lokále nefungue. $return je prázdné pole.
curl_exec($conn)
vrátí
{"result":true,"data":"{\"subuser_id\":123,\"name\":\"Jan Cerveny\",\"group_id\":9,\"email\":\"xyz@gmail.com\"}"}
pokud do json_decode dám natvrdo to, co vrátí curl_exec, tak je vše OK:
$return = (array) json_decode('{"result":true,"data":"{\"subuser_id\ ":123,\"name\":\"Jan Cerveny\",\"group_id\":9,\"email\":\"xyz@gmail.com \"}"}');
V čem je problém? Musí být někde něco nastaveno v konfiguraci curl, php.ini apod.?
Curl je zapnuto a funguje, jen nefunguje zpracování výsledku pomocí json_decode.
Změna předmětu, původně: curl_setopt (host)
Zkus použit curl_error, jestli vrátí chybu?
http://www.php.net/manual/en/function.curl-error.p hp
Nevrátí chybu
UTF-8 BOM hlavička je zlo - odstráň je pred volaním funkcie json_decode.
Bohužel nepomohlo, po úpravě
taky vytvoří prázdné pole $return
Nieco sa da vycitat aj tu:
http://php.tonnikala.org/manual/en/function.json-d ecode.php
Tak jsem debugem zjistila, že UTF-8 BOM se na začátek dala 2x(!), proto odstranění nefungovalo. Když jsem to přepsala tak, aby se UTF-8 BOM odstraňovala ve while cyklu dokud tam je, tak to začalo fungovat
. Zajímalo by mne, čím může být způsobeno, že se tam dostala 2x?
Ak je tá hlavička 2x priamo v odpovedi servera, tak potom je to otázka na toho, čo programoval ten server. Môže to byť napr. spôsobené tým, že jednu hlavičku obsahuje súbor so šablónou, ktorá sa posiela na výstup, a druhú samotný reťazec s JSON-om.