Autor | Zpráva | ||
---|---|---|---|
pajadvorak Profil |
#1 · Zasláno: 6. 9. 2021, 22:05:37
Po přechodu z PHP 7.0 na PHP 7.4 máme problém s naší aplikací.
Tuto chybu nám to vrací: {"message":"Unspecified internal error: - Trying to access array offset on value of type null - \u0159\u00e1dek 38 v souboru \/xxx\/xxx\/xxxxx.cz\/www\/xxxxxx.cz\/xxxxxx\/api.php"} řádek 37 => $body = (json_decode(file_get_contents('php://input'), true));
řádek 38 => $response = $action->Perform((object)$parray, (object)$body["body"]["request"]);
Na google jsme nic moc nenašli. Prosím o pomoc. Děkuji. |
||
lionel messi Profil |
#2 · Zasláno: 6. 9. 2021, 22:34:33
pajadvorak:
Skúšali ste základný debugging? var_dump($body); json_last_error(); a podobne...
|
||
Keeehi Profil |
#3 · Zasláno: 7. 9. 2021, 02:45:53
pajadvorak:
Hláška říká, že se snažíte přistupovat k něčemu co si myslíte že je pole ale ve skutečnosti je to null. Pravděpodobně to bude už proměnná $body . Do té se null dostane jako návratová hodnota funkce json_decode. Ta null vrací (mimo jiné), pokud se nepodaří rozparsovat vstup. Což bude pravděpodobně tento případ. Takže asi file_get_contents('php://input') nevrací úplně to co byste čekali. Pokud je tam však validní json pak nezbývá než hledat, ve které části se ten null bere. Pokud nemáte debugger, tak se bude určitě hodit var_dump, jak psal lionel messi.
|
||
pajadvorak Profil |
#4 · Zasláno: 9. 9. 2021, 08:30:22
Tak to jsme již vyřešili.
if ($_SERVER['REQUEST_METHOD'] == 'POST') { $body = (json_decode(file_get_contents('php://input'), true)); $body = (object)$body["body"]["request"]; } else { $body = []; } $response = $action->Perform((object)$parray, $body); header("Content-Type:application/json"); http_response_code($response->code); json_encode($response->data); Ale i přesto, že všude jsou data (code = 200, data = vrací potřebné pole) při vypsání na obrazovku (print_r()), tak to v těle hlavičky není - v odpovědi. Co se tam mohlo změnit, že to v PHP 7.0 funguje a v PHP 7.4 ne? Máte někdo prosím radu, co s tím? Již se s tím trápím několik dní a bez úspěchu. Děkuji. |
||
pajadvorak Profil |
lionel messi:
mám tam toto (bez chyby): catch (UnknownActionException $e) { error_response(400, $e->GetMessage()); } catch (AuthException $e) { error_response(401, $e->GetMessage()); } catch (ApiException $e) { error_response(500, $e->GetMessage()); } catch (\ErrorException $e) { if (DEBUG) { error_response(500,"Unspecified internal error: - {$e->GetMessage()} - řádek {$e->GetLine()} v souboru {$e->GetFile()}"); } else { error_response(500,"Unspecified internal error"); } } catch (\Exception $e) { if (DEBUG) { error_response(500,"Unspecified internal error: - {$e->GetMessage()}"); } else { error_response(500,"Unspecified internal error"); } } vyřešeno problém byl v chybjícím "echo" json_encode($response->data); Zvláštní, že to v PHP 7.0 nevadilo.... |
||
Časová prodleva: 2 roky
|
0