Problém, s ktorým som sa stretol predtým, bol som veľmi znepokojený, ako ho vyriešiť, a teraz som konečne našiel riešenie, a teraz sa oň s vami podelím, problém je nasledovný: Prísne štandardy: V upload\include\cls_template.php na riadku 418 by sa mali odkazovať iba premenné Riadok 418: $tag_sel = array_shift(explode(' ', $tag));
Obchádzka 1: Problém verzií 5.3 a vyššie by mal súvisieť aj s konfiguráciou. Pokiaľ riadok 418 rozdelí túto vetu na dve vety, nie je problém $tag_sel = array_shift(explode(' ', $tag)); Zmenené na:
$tag_arr = explodovať(' ', $tag); $tag_sel = array_shift($tag_arr); Keďže parametre array_shift sú prenášané referenciou, predvolene je možné odovzdať len konkrétne premenné nad 5.3 a hodnota nemôže byť vrátená cez funkciu Rovnako, keď narazíte na chyby pri vnorení funkcií, môžu byť zapísané samostatne a chyby sa prirodzene vyriešia
Ako: Funkcia get_dyna_libs($theme, $tmp)
{ $extsub = explodovať('.', $tmp); $ext = end($extsub); $tmp = základný názov($tmp,".$ext"); $sql = 'VYBRAŤ región, knižnicu, sort_order, id, číslo, typ'. ' OD '. $GLOBALS['ecs']->table('template'). " WHERE theme = '$theme' A názov súboru = '" . $tmp. "' AND napíš > 0 AND remarks=''". 'PORADIE PODĽA regiónu, knižnice, sort_order'; $res = $GLOBALS['db']->getAll($sql); $dyna_libs = array(); foreach ($res AS $row)
{ $dyna_libs[$row['region']][$row['library']][] = array( 'id' => $row['id'], 'číslo' => $row['číslo'], 'typ' => $row['typ'] );
} return $dyna_libs;
}
set $ext = end(explode('.', $tmp)); Zmena $extsub = explodovať('.', $tmp); $ext = end($extsub);
Riešenie 2 (Chyba maskovania):
Alebo ak je nastavený takto: error_reporting = E_ALL | E_STRICT Nasledujúce nastavenia sú dostupné v php.ini: error_reporting = E_ALL | E_STRICT
To znamená, že sa zobrazujú varovania o kódovacích štandardoch. Joomla vlastne odporúča zrušiť výstup chyby, ktorý by sa mal zmeniť na prípadne na ladenie error_reporting = E_ALL & ~E_NOTICE
Problém bol vyriešený. |