file_get_contents(‚php://input‘) nevrací žádná data (pokračování)
Dobrý den.
Už jsem se ptal jednou zde (jde o získávání dat z POST requestu), ale než jsem stačil získat potřebné informace, otázka byla označena jako vyřešená (což není).
Přidávám tedy další kontext:
- zasílaná HTTP hlavička je „Content-Type: application/json“, tj. nastavení enable_post_data_reading by nemělo mít vliv
- složky session a tmp v kořenovém adresáři FTP mám a opravená práva souborů mají také
Nenapadá vás tedy prosím, proč na straně vašeho webhostingu není možné k POST datům přistupovat?
Děkuji a zdravím
TK
5 Odpověď
Dobrý den,
posty uzavíráme 14 dní po odeslání poslední reakce. Pokud řešení podpory/zákazníka nefunguje, můžete post udržet „naživu“ sdělením, že to už nastavené dávno máte, nebo že jste to zkusil, ale nepomohlo to.
K Vašemu problému – běžná řešení nepomohla, ale chyba na serveru je také nepravděpodobná, protože kdyby nefungoval POST obecně, řešilo by takovou chybu mnohem víc zákazníků. Z naší strany bohužel chyby vlastního kódu neřešíme. Jediné další možnosti řešení, které mě napadají, jsou:
- Vytvořit testovací složku/subdoménu a otestovat funkcionalitu v nejjednodušší možné podobě. Potom přidávat potenciálně problematický kód.
- Aktivovat na Webhostingu errorlog a zjistit, jestli se něco neobjeví tam.
Děkuji za odpověď i za vysvětlení, jak funguje životnost postu 🙂 (vlastně mi to někdy přijde škoda, že posty uzavíráte pro budoucí odpovědi – myslím, že by tam mohly vznikat hezké diskuze)
Každopádně zpět k věci. Zkoušel jsem v rámci testování posílat POST request odjinud než dosud a tam mi pomocí následujícího skriptu data načíst šlo. Obecně je to tedy evidentně v pořádku.
$request = file_get_contents('php://input');
$data = json_decode($request, true);
Nicméně když se snažím zpracovat data POST requestu z té jedné konkrétní služby, k přečtení dat nedojde. V hlavičce sice vidím, že tam nějaký obsah je (tj. Content-Length je nenulová), nicméně proměnná $data zůstává prázdná. V podstatě se to chová podobně jako popisuje kolega ve vedlejším vlákně (jen v mém případě se to nezná být závislé na velikosti dat – jedná se o pouhých 1,4 kB).
Je ale pravda, že v případě toho problematického requestu to nyní háže v errorlogu následující (některé hodnoty změněny na XXX):
Wed Aug 14 22:20:38.642373 2024] [proxy_fcgi:error] [pid XXX:tid XXX] (70007)The timeout specified has expired: [id XXX] [client XXX] AH01075: Error dispatching request to : (reading input brigade)AH01075: Error dispatching request to : (reading input brigade)
Možná bude toto nějaké vodítko, proč k přečtení dat nedochází?
Dobrý den,
jde o zpracování dat z jedné konkrétní služby nebo se problém objevuje i jinde? Na jakém hostingu to testujete konkrétně?
Máte případně příklad konkrétních kódů, které bychom mohli otestovat?
Takto nedokážeme přesně říci, zda-li je problém u konkrétní služby, nebo narážíte na nějaký limit atp.
Dobrý den.
Udělal jsem pár dalších testů a ukazuje se, že čtení POST requestů z jiného serveru je v pořádku. Dle všeho se tedy jedná o problém konkrétní služby (Anabix CRM).
S podporou dané služby komunikuji, ale konkrétní kódy se mi zatím získat nepodařilo. Dostal jsem pouze informace, že „jde pravděpodobně o nějak špatně nastavený proxy server“.
U vás to testuji na webhostingu, který běží na clusteru hc1-wd281.
Kódy se ještě pokusím získat, ale pokud by vám výše uvedené informace už k něčemu byly, budu rád za návrhy možného řešení.
Děkuji
TK