Autor Zpráva
pixman
Profil
Zdravím,
po přechodu mého webhostingového serveru na PHP verzi 5.2.17 a administračního rozhraní Plesk na verzi 9.5.4 mi přestalo fungovat stahování kurzu z Komerční banky.
Kurz stahuju následujícím PHP scriptem:

<?php

$url="http://trading.kb.cz/ibweb/downloadExchangeRate.do?d=13&m=10&y=2011&seqNumber=3";
$save_path="kurz.xls";

if (copy($url, $save_path))
  echo "OK";
else
  echo "ERROR";

?>


Na localhostu mi script funguje naprosto bez problémů.
Když jsem psal na podporu mého webhostingu, tak jsem dostal následující odpověď:

"Na serveru doslo k aktualizaci verze PHP, ktera se nyni chova pri praci s url wrappery jinak nez puvodni - dochazi k uprave nekterych znaku v URL na html entity - viz. chybove hlaseni:
[type] => 2
[message] => copy() [function.copy]: Unable to access http://trading.kb.cz/ibweb/downloadExchangeRate.do?d=13&m=10&y=2011&seqNumber=3
Bohuzel nejsme programatori, nastudujte si prosim dokumentaci php."

Já jsem bohužel nenašel nic, co by mi pomohlo.

Děkuji za každou radu.
meris
Profil
ahoj,
podle hlášky se jedná o to že znak & se převede na html entitu, tedy &amp; a pak se jedná o nesprávně zadanou url adresu.
Aby jsi to opravil tak musíš nastavit url escapování.

zkus místo té cesty co tam máš uvedenou zkusit toto:
http%3A%2F%2Ftrading.kb.cz%2Fibweb%2FdownloadExchangeRate.do%3Fd%3D13%26m%3D10%26y%3D2011%26seqNumber%3D3

více najdeš třeba zde nebo zde(nástroj na escapování url)
pixman
Profil
meris:
Bohužel mi to pořád nefunguje.

Pokud nahradím odkaz následujícím vygenerovaným odkazem, tak to nefunguje uz ani na localhostu.
http%3A%2F%2Ftrading.kb.cz%2Fibweb%2FdownloadExchangeRate.do%3Fd%3D13%26m%3D10%26y%3D2011%26seqNumber%3D3

Nebyl by ještě nějaký jiný nápad?

Díky moc.
meris
Profil
pixman:
je na tom serveru nastavení chyb? asi by se hodilo víc informací o té chybě.

Jinou možností je vyzkoušet jiný způsob stahování, tady je jich celkem dost: stackoverflow - cURL by mohlo fungovat. Otázka je jakým způsobem parsují ta URL, s touto chybou jsem se ještě nesetkal
Davex
Profil
pixman:
Jen pro kontrolu - stažení libovolného jiného souboru, který nemá v URL parametry ti funguje? Dejme tomu třeba
$url = 'http://www.jakpsatweb.cz/';
pixman
Profil
Davex:
Zkoušel jsem, ale nefunguje to ani bez prametrů.
Funkce copy() fungovala pouze když jsem namísto URL napsal relativní adresu.

meris:
Více informací o chybě bohužel nemám.
Nakonec se mi to podařilo rozchodit pomocí file_put_contents, akorát to nepřepisuje původní soubor.

<?php

unlink("kurz.xls");

$url="http://trading.kb.cz/ibweb/downloadExchangeRate.do?d=13&m=10&y=2011&seqNumber=3";
$save_path="kurz.xls";

file_put_contents($save_path, file_get_contents($url));

?>


Díky moc za rady
Kcko
Profil
Z php manuálu

>> If filename does not exist, the file is created. Otherwise, the existing file is overwritten, unless the FILE_APPEND flag is set.
filipkohl
Profil *
stačí použít funkci
unlink($cesta_k_souboru);
pro vymazání souboru předtím, než nový soubor stáhneš

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0