Problém, se kterým jsem se dříve setkal, byl jsem velmi rozrušený, jak ho vyřešit, a teď jsem konečně našel řešení, a teď se o něj s vámi podělím, problém je následující: Přísné standardy: Pouze proměnné by měly být předávány podle odkazu v upload\includes\cls_template.php na řádku 418 Řádek 418: $tag_sel = array_shift(explode(' ', $tag));
Řešení 1: Problém verzí 5.3 a výše by měl souviset také s konfigurací. Pokud řádek 418 rozděluje tuto větu na dvě věty, není problém $tag_sel = array_shift(explode(' ', $tag)); Změněno na:
$tag_arr = explodovat(' ', $tag); $tag_sel = array_shift($tag_arr); Protože parametry array_shift jsou předávány odkazem, lze ve výchozím nastavení předávat pouze konkrétní proměnné nad 5.3 a hodnota nemůže být vrácena funkcí Stejně tak při výskytu chyb vnoření funkcí lze tyto funkce zapsat samostatně a chyby se vyřeší přirozeně
Protože: funkce get_dyna_libs($theme, $tmp)
{ $extsub = explodovat('.', $tmp); $ext = end($extsub); $tmp = základní název($tmp,".$ext"); $sql = 'VYBRAT region, knihovnu, sort_order, ID, číslo, typ'. ' OD '. $GLOBALS['ecs']->table('template'). " WHERE theme = '$theme' A název souboru = '" . $tmp. "' AND napiš > 0 AND remarks=''". 'POŘADÍ PODLE regionu, knihovny, 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'], 'type' => $row['type'] );
} return $dyna_libs;
}
set $ext = end(explode('.', $tmp)); Změna $extsub = explodovat('.', $tmp); $ext = end($extsub);
Řešení 2 (Maskovací chyba):
Nebo pokud je nastaveno takto: error_reporting = E_ALL | E_STRICT Následující nastavení jsou k dispozici ve php.ini: error_reporting = E_ALL | E_STRICT
To znamená, že se zobrazují varování o kódovacích standardech. Joomla dokonce doporučuje rušit výstup chyb, který by měl být změněn na případ ladění error_reporting = E_ALL & ~E_NOTICE
Problém byl vyřešen. |