Přihlásit se
Náš uživatel srubard nás upozornil na chybu, která se mu objevila po instalaci Joomly! 1.0.9. Chyba se projevuje tím, že ve správcovské části se u některých funkcí nevypíše nic a objeví se dlouhý seznam chybových hlášení. Viníkem je soubor xml_domit_lite_parser. Pokud jste se i vy setkali s touto chybou, přečtěte si tento článek. Nebo si jej přečtěte i bez toho, aby se chyba u vás vyskytla. Projevuje se totiž při jedné naprosto konkrétní konfiguraci, která ale zase až tak vzácná není.

Příznaky tak, jak jsem je již popsal jsou jasné (doslovná citace) :

Zkoušel jsem na localhostu upgrade na 1.0.9. a stáhl jsem si odsud češtinu a funguje mi pouze utf-8. Když dám jiné (cp1250 nebo iso) a vlezu v adminu do SITE-language manager, píše mi hlášky níže. Poradíte někdo proč?: 
 
Warning: xml_parser_create() [function.xml-parser-create]: unsupported source encoding "windows-1250" in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1728 
 
Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1735 
 
Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1736 
 
Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1737 
 
Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1738 
 
Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1739 
 
Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in C:\Program Files\xampp\htdocs\joomla\includes\domit\xml_domit_lite_pars er.php on line 1742

Začal jsem to celé prozkoumávat  a hledal v diskuzi na joomla.org. Narazil jsem tam na tento dotaz a jeho řešení. Pokud se vám nechce číst anglický text, připravil jsem drobný výcuc.

Chyba se objevuje jen na PHP5 (s PHP4 je vše OK) a jen při zapnutém jiném než anglickém jazyce (v našem případě u kódování ISO-8859-2 nebo WINDOWS-1250, UTF8 se to z nějakých důvodů netýká). 

  • Celá oprava spočívá v tom,že si ve své Joomla! 1.0.9 instalaci najdete soubor xml_domit_lite_parser.php a provedete v něm změnu. Soubor najdete ve složce includes\domit\
  • Ze všeho nejdříve si proveďte zálohu původního souboru. vytvořte si kopii a uložte ji na bezpečné místo, abyste jí mohli kdykoliv přehrát nově upravený soubor a vrátit se tak k původnímu stavu
  • Pomocí nějakého editoru otevřete tento soubor a najeďte na řádek 1721. Najdete tam asi toto :

//create instance of expat parser (should be included in php distro)
        if (version_compare(phpversion(), '5.0', '<=')) {
            $parser = xml_parser_create('');
        } else {
            // special handling for encoding support
            if (defined( '_ISO' )) {
                $iso = explode( '=', _ISO );
                $parser = xml_parser_create($iso[1]);
            } else {
                $parser = xml_parser_create();
            }
        }

  • Celý tento kód vymažte a nahraďte jej novým :

//create instance of expat parser (should be included in php distro)
if (version_compare(phpversion(), '5.0', '<=')) {
            $parser = xml_parser_create('');
        } else {
            $parser = xml_parser_create('iso-8859-1');
        }

  • Věnujte zvýšenou pozornost správnému počtu závorek, neboť jsou velmi důležité.
  • Soubor uložte a oprava je hotová.
Ještě jednou upozorňuji, že se jedná opravdu o přímý zásah do kódu Joomly! a tak si dávejte dobrý pozor na to, jak úpravu provádíte! Vývojový tým slíbil vydání opravy a nové verze ke stažení, kterátuto chybu už nebude mít.