| Autor | Zpráva | ||
|---|---|---|---|
| MartinMa Profil * |
#1 · Zasláno: 13. 12. 2025, 10:24:17
Ahoj, prosím o pomoc.
pomocí file_get_contents() stahuji XML z níže uvedené adresy, které následně zpracovávám. Roky to fungovalo dobře. Jediné, co bylo potřeba upravit v PHP, byl User Agent a certifikáty. ini_set('user_agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0');
$certifikat = stream_context_set_default(array('ssl'=>array('verify_peer'=>true, 'verify_peer_name'=>true, 'cafile'=>'/home/www/moje-domena.cz/www/moje-domena.cz/scripts/cacert.pem')));
$url = "https://www.chmi.cz/files/portal/docs/meteo/om/bulletiny/XOCZ50_OKPR.xml";
$xml = file_get_contents($url);Nyní file_get_contents() vrací chybu - Cannot open stream. Když vypíšu hlavičky: print_r(get_headers($url)); // Vrátí to chybu 404 Not Found Znamená to tedy, že vzdálený server blokuje přístup ze skriptů, protože v prohlížeči ta stránka funguje. Pomocí Dev Tools v prohlížeči jsem prověřil, že adresa se nikam nepřesměruje. Jako poslední záchranu jsem zkoušel cURL s hlavičkami, které posílá prohlížeč, ale ani to nevyřešilo problém… … curl_setopt($ch, CURLOPT_HTTPHEADER, [ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0", "Accept: application/xml,text/html;q=0.9,*/*;q=0.8", "Accept-Language: cs", "Referer: https://www.chmi.cz/" ]); … Poradíte prosím někdo, jak to vyřešit? Děkuju moc, Martin |
||
| Davex Profil |
#2 · Zasláno: 13. 12. 2025, 18:36:34
S vynecháním nastavení
'cafile'=>'/home/www/moje-domena.cz/www/moje-domena.cz/scripts/cacert.pem' to chodí.
|
||
| MartinMa Profil * |
#3 · Zasláno: 13. 12. 2025, 21:18:48
Bohužel odebrání certifikátu vůbec problém neřeší.
PHP stále to hlásí, že soubor není dostupný (po zadání adresy přímo v prohlížeče soubor dostupný je)... Toto hlásí PHP get_headers($url): Array ( [0] => HTTP/1.1 404 Not Found [1] => date: Sat, 13 Dec 2025 20:15:25 GMT [2] => server: Apache [3] => content-type: text/html [4] => content-length: 1769 [5] => vary: Accept-Encoding [6] => last-modified: Tue, 04 Nov 2025 10:50:02 GMT [7] => etag: "6909da5a-6e9" [8] => access-control-allow-origin: * [9] => accept-ranges: bytes [10] => connection: close ) |
||
| tttttttttt Profil * |
#4 · Zasláno: 14. 12. 2025, 02:13:11
MartinMa:
Server vrací tyhle hlavičky. ( [0] => HTTP/1.1 200 OK [1] => date: Sun, 14 Dec 2025 00:57:44 GMT [2] => content-type: text/xml; charset=utf-8 [3] => last-modified: Sat, 13 Dec 2025 09:16:23 GMT [4] => vary: Accept-Encoding [5] => etag: W/"693d2ee7-19016e" [6] => cache-control: max-age=60 [7] => age: 0 [8] => x-cache: HIT [9] => x-served-by: ng-w4 [10] => accept-ranges: bytes [11] => content-length: 1638766 [12] => connection: close ) |
||
| MartinMa Profil * |
#5 · Zasláno: 14. 12. 2025, 10:10:59
Děkuji za odpovědi.
Ale záhada stále pokračuje. Když na sdíleném hostingu (Český hosting, PHP 8.4) zadám get_headers() toho xml souboru, tak dostanu odpověď HTTP/1.1 404 Not Found. Když tam zadám get_headers() serveru (www.chmi.cz), tak dostanu HTTP/1.1 200 OK. To samé jsem zkusil na lokálním webserveru na Raspberry (Lighttpd, PHP 8.4) - a zde u souboru i serveru dostanu HTTP/1.1 200 OK. V čem by tedy mohl být problém? Že by server blokoval IP Českého hostingu? Nebo nějaké nastavení na hostingu? allow_url_fopen mám povolené. |
||
| tttttttttt Profil * |
#6 · Zasláno: 14. 12. 2025, 12:40:35
Server chmi.cz blokuje IP, hosting blokuje připojení k serveru, nebo je někde nastavené něco typu proxy. Tipuju to první. Můžeš vyzkoušet jiné adresy na chmi.cz, napsat na podporu nebo si zkusit hrát s certifikáty – pokud nastavíš CA DigiCertu, kterou používá chmi.cz, měl bys od www.chmi.cz pořád dostat 404 a od jiných serverů chybu při handshaku. Pokud bys nekomunikoval s www.chmi.cz, dostaneš chybu při handshaku i pro www.chmi.cz.
|
||
| Davex Profil |
Od konce listopadu 2025 má ČHMÚ nový web, který se zdá ne zcela odladěný, protože často chybuje (504 Gateway Time-out). Předpokládal bych, že se mohly změnit URL těch dat co stahuješ a hledal bych je nově na opendata.chmi.cz.
Odhadoval bych, že někomu to funguje a jinému ne, protože: uživatelům bude postupně spouštěn ve třech fázích. Pro všechny uživatele bude dostupný nejpozději na konci roku 2025. (zdroj ČHMÚ spouští nový web: přehledný design a responzivita) Ten tvůj soubor je asi teď tu vystrahy-cr.chmi.cz/data/XOCZ50_OKPR.xml |
||
| MartinMa Profil * |
#8 · Zasláno: 14. 12. 2025, 21:32:30
Davex:
Děkuji, mistře! Je to opravdu tím, že novou verzi webu nasazují postupně. Moje lokální zařízení mají pořád přístup na starou, ale hosting už přistupuje na novou verzi, kde je soubor na jiné adrese (na te, kterou jsi napsal). VELICE DĚKUJI. |
||
|
Časová prodleva: 9 měsíců
|
|||
0