PHP a XML: „Na začátku externí entity chybí procesní instrukce xml“

by Zdeněk Večeřa 3 Comments

A zase ty hvězdičky! Přes AJAX mám řešené hodnocení něčeho. Kliknu na hodnocení, pošlou se data na zpracování, server vygeneruje XML, který se vrátí ke zpracování JavaScriptem (pro změnu stavu na stránce). Nutné je zdůraznit, že data jsou ve formátu XML vrácena zcela korektně. Přesto Firebug vypisuje chybu:

Na začátku externí entity chybí procesní instrukce xml
undefined

Aby se nám to ještě trochu zamotalo, tak se tato chyba vyskytuje pouze, pokud script spouštím na localhostu. Na serveru funguje bez problémů. Chyba byla způsobena includovanými soubory.

Script, který generuje XML, obsahuje na svém začátku hlavičky s kódováním a zakázáním cache, po kterých následuje require několika souborů. Dále vytvoření několika objektů tříd, nastartování session a připojení k databázi. Zbývá už pouze hlavička pro xml a echo dat.

V jednom vkládaném souboru byl problém. Pokud vkládaný soubor obsahoval na úplném konci dva a více prázdných řádků, naskytla se výše vypsaná chyba. Při jednom prázdném řádku bylo vše v pořádku. Prázdné řádky se nacházely za poslední uzavírací ?>.

Všechny soubory byly v kódování UTF-8. Primárně pracuji v Eclipse PDT, pro jistotu jsem zkusil i PSPad, ale problém se též vyskytuje. Takže jaké je řešení? Dávat pozor na prázdné řádky.

Comments ( 3 )

  1. MartiniX
    Díky za užitečnou informaci. Jen dodám, že mě to dělalo i na webu, nejen na lokalhostu. Z toho kouká nějaká direktivav php.ini :) Ještě jednou díky Martin
  2. Martin
    Diky, pomohlo, potvrzuji.
  3. Miki
    Problém byl díky článku identifikován a odstraněn. Ušetřilo mi to opravdu spoustu času, protože toto by mě ani ve snu nenapadlo ... Moc děkuji!

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..