Autor Zpráva
Vitus
Profil
Ahoj lidi,

chtěl bych se zeptat, jestli byste mi nepomohli s problémem...

Vytvořil jsem si takový prográmek, který by mi měl v práci usnadnit práci, mělo by to umět komunikovat s ARESem, Veřejným (dříve Obchodním) rejstříkem, Živnostenským rejstříkem, seznamem advokátů, Insolvenčním rejstříkem, atd.
Doma na testovacím PC (EasyPHP, php 5.3.2, win XP) mi všechno funguje bez problémů tak jak má. Když jsem si to přenesl do práce, tak se objevily chyby, s kterýma si nevim rady. Určitě to bude nějaká blbost v nastavení PC nebo PHP, ale ať zkoušim co zkoušim, nemůžu na to přijít.

Část kódu používá funkci file_get_contents a v práci mi to vyhazuje chybu:
Warning: file_get_contents(http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico=27221971) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Nen? zn?m ??dn? takov? hostitel. in C:\Users\vstejnar\Documents\EASYphp\www\pokus\ares2.php on line 45

Zkoušel jsem všechno co radí tady:
http://stackoverflow.com/questions/542046/php-file-get-contentsloc-fails
http://stackoverflow.com/questions/23386364/file-get-contents-php-network-getaddresses-getaddrinfo-failed
http://stackoverflow.com/questions/20064372/file-get-contents-php-network-getaddresses-getaddrinfo-failed-name-or-servi
https://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=84504

Další část kódu používá SOAP (a ISIR je na https):
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://isir.justice.cz:8443/isir_cuzk_ws/IsirWsCuzkService?wsdl' : failed to load external entity "https://isir.justice.cz:8443/isir_cuzk_ws/IsirWsCuzkService?wsdl" in C:\Users\vstejnar\Documents\EASYphp\www\pokus\isir2.php:15 Stack trace: #0 C:\Users\vstejnar\Documents\EASYphp\www\pokus\isir2.php(15): SoapClient->SoapClient('https://isir.ju...') #1 {main} thrown in C:\Users\vstejnar\Documents\EASYphp\www\pokus\isir2.php on line 15

Zase jsem prolezl internet a spoustu toho vyzkoušel:
http://stackoverflow.com/questions/17284735/uncaught-soapfault-exception-wsdl-soap-error-parsing-wsdl-couldnt-load-from
http://stackoverflow.com/questions/12690722/fatal-error-uncaught-soapfault-exception-wsdl-soap-error-parsing-wsdl-coul
http://stackoverflow.com/questions/11082889/soap-error-parsing-wsdl-couldnt-load-from-url

Nic nepomohlo... 

Všechny nastavení PHP, MySQL, Apache mam v práci stejně jako doma a jak už jsem psal - doma všechno funguje. Zřejmě půjde o něco ve Windowsech (v práci máme Win 7 Profesional) a v tom už se moc nechytám.

V /etc/hosts mám nastaveno
127.0.0.1    localhost

Předem děkuju za každý nápad.
Keeehi
Profil
Vitus:
Zřejmě půjde o něco ve Windowsech (v práci máme Win 7 Profesional)
V /etc/hosts mám nastaveno
No, toto prohlášení je trochu divné ne? /etc/hosts je linuxová cesta.

Myslím si že ve skutečnosti nejde o dva problémy, ale o jeden. Podle první chybové hlášky bude problém s DNS. PHP z nějakého důvodu nezvládá překládat doménová jména na IP adresy. Stejný problém bude nejspíše způsobovat i druhou chybu, jen chybová hláška není tak popisná.

Jak se to řeší nevím, s takovým problémem jsem se ještě nesetkal. Začal bych tím, že bych vynechal DNS a zjistil, zda vůbec stáhnu obsah když znám IP adresu.
echo file_get_contents('http://72.52.91.14/');
(stránky PHP dokumentace, mělo by se zobrazit It works! - defaultní stránka apache)

Pokud se to povede, tak víme, že problém by opravdu měl být v DNS a pokud se ho povede opravit, mělo by to fungovat.
Pokračoval bych tím, že bych zjistil, jak rozsáhlý je problém. Zda jsou nedostupné jen některé stránky (mfcr a jsutice), nebo nějaká podmnožina (např jen české, zkusil bych seznam.cz a jiné velké české servery) nebo nefunguje jakákoli adresa (zkusil bych google.com a jiné velké zahraniční servery).

Dále to záleží, jaká budou tvá zjištění
Vitus
Profil
Ahoj,
děkuji za pomoc...

to "etc/hosts" je zkrácenina, ve windowsech je to C://Windows/System32/drivers/etc/hosts ale jak jsem psal, tyhle věci jdou trochu mimo mě (čerpal jsem jen z těch návodů na StackOverflow)

Zkusim jsem volat to

echo file_get_contents('http://72.52.91.14/');

a vyjela mi chybová hláška

Warning: file_get_contents(72.52.91.14) [function.file-get-contents]: failed to open stream: Pokus o připojení selhal, protože připojená strana v časovém intervalu řádně neodpověděla, nebo vytvořené připojení selhalo, protože neodpověděl připojený hostitel. in C:\Users\vstejnar\Documents\EASYphp\www\pokus\pokus.php on line 20

Fatal error: Maximum execution time of 300 seconds exceeded in C:\Users\vstejnar\Documents\EASYphp\www\pokus\pokus.php on line 20

Když jsem zkoušel přes to file_get_contents "načíst" seznam.cz a google.com, tak mi to vyhodilo stejnou chybu, o které jsem psal v prvním příspěvku.
Keeehi
Profil
Vitus:
Warning: file_get_contents(72.52.91.14) [function.file-get-contents]: failed to open stream
Podle toho soudím že PHP nemá vůbec přístup k internetu. Je jasné, že když nemá přístup k internetu, že následně bude selhávat i překlad DNS.

Pokud to zkoušíte na počítači, který normálně připojený k internetu je (webový prohlíže zvládá načítat stránky), pak bych to viděl, že vám to nejspíše blokuje firewall. Na chvíli bych vyzkoušel firewall úplně vypnout a spustit script znovu. Pokud se to povede, víte, že připojení blokuje firewall. Můžete ho zase zapnout, projít pravidla a najít to, které blokuje PHP (případně apache) a tam povolit provoz.
Vitus
Profil
Toho firewalu jsem se trošku bál... Je to skutečně tak, že klasický internet na tom PC funguje normálně. Teď jen musím zjistit, jestli firewall máme nastavený u nás jako u organizační složky, nebo je nastavovaný celoreublikově komplet pro celý podnik...

Keehi, ještě jednou děkuji za pomoc, pak dám vědět, jak jsem dopadl.
Davex
Profil
Vitus:
Ve spoustě organizací není z bezpečnostních důvodů možný přímý přístup na internet, ale je nutné používat proxy server.
Vitus
Profil
Davex:
No právě, toho jsem se bál... Zatím jsem rozhodil sítě, kdo co ovládá a pak budu žebrat, jestli by nešla udělat výjimka...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: