Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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)

Předmět Autor Datum
Zkus použit curl_error, jestli vrátí chybu? http://www.php.net/manual/en/function.curl-error.p hp nový
host 31.05.2012 18:56
host
Nevrátí chybu nový
Anicka 31.05.2012 23:08
Anicka
UTF-8 BOM hlavička je zlo - odstráň je pred volaním funkcie json_decode. nový
los 31.05.2012 22:00
los
Bohužel nepomohlo, po úpravě $conn = curl_init(); curl_setopt($conn, CURLOPT_URL, $url); curl_setop… nový
Anicka 31.05.2012 23:29
Anicka
Nieco sa da vycitat aj tu: http://php.tonnikala.org/manual/en/function.json-d ecode.php nový
KiloViktor 31.05.2012 23:44
KiloViktor
Tak jsem debugem zjistila, že UTF-8 BOM se na začátek dala 2x(!), proto odstranění nefungovalo. Když… nový
Anicka 01.06.2012 00:08
Anicka
Ak je tá hlavička 2x priamo v odpovedi servera, tak potom je to otázka na toho, čo programoval ten s… poslední
los 01.06.2012 22:40
los

Bohužel nepomohlo, po úpravě

$conn = curl_init();
curl_setopt($conn, CURLOPT_URL, $url);
curl_setopt($conn, CURLOPT_HEADER, 0);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
$pom = curl_exec($conn);
if (substr($pom, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { 
    $pom = substr($pom, 3); 
}
$return = (array) json_decode($pom);

taky vytvoří prázdné pole $return

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:-D. Zajímalo by mne, čím může být způsobeno, že se tam dostala 2x?

Zpět do poradny Odpovědět na původní otázku Nahoru