Autor Zpráva
stepanka
Profil *
Ahoj,

nevíte prosím někdo, proč na serveru mi běžne funguje zápis
if($variable) echo $variable;

přičemž na lokále mi stejný zápis hodí chybu:

"Fatal error: Uncaught exception 'Zend_Db_Table_Rowset_Exception' with message 'Illegal index 4' in..."?

Pokud to na lokále zapíšu jako
if(isset($variable)) echo $variable;

tak to funguje bez problému. Vím, že první zápis je krapet prasácký, ale není to můj kód. Register_globals jsou na obou serverech vypnuté. Jaké další nastavení serveru tohle může způsobovat?

Moc děkuju.
__construct
Profil
stepanka:
Jaké další nastavení serveru tohle může způsobovat?
error_reporting()
stepanka
Profil *
__construct:
Děkuju za reakci, ale tim to právě není. Samozřejmě na lokále mám chybové hlášení zapnuté, na serveru je vypnuté, ale i když ho na lokále vypnu, tak tam chyba zůstane pořád, jen se nevypíše a místo ní se zobrazí stránky s nápisem "Požadovaná stránka neexistuje". Ale to je ošetřeno skriptem, aby se uživatel nepokoušel zadávat různé URL, tzn. chyba je tam pořád.
Joker
Profil
__construct:
Nastavení error_reporting by sice potlačilo hlášku, ale nedonutí PHP pokračovat přes fatal error.

stepanka:
Příčinou té chyby je výjimka vyhozená aplikací. Takže teoreticky na to může mít vliv třeba i konfigurace aplikace anebo obsah databáze.

Vím, že první zápis je krapet prasácký
Hlavně ale v těch zápisech je podstatný rozdíl.
Hodnoty jako false, 0, "" (prázdný řetězec), "0" (řetězec „0“) projdou přes if(isset(proměnná)), ale neprojdou přes if(proměnná)
Naopak když proměnná není definovaná, tak if(proměnná) generuje poznámku (notice).
stepanka
Profil *
Joker:
Děkuju za reakci.

Naopak když proměnná není definovaná, tak if(proměnná) generuje poznámku (notice).
Přesně tak, poznámku bych brala, ale fatal error?
Aplikace je naprosto identická s tou na serveru, databáze taky. Musí to podle mě být nějakým nastavením v php.ini, nebo v apachi. Ale nemůžu přijít na to, jakým...
Aesir
Profil
stepanka:
Vidím výjimku ze Zend Frameworku, tak mě napadá, používá se s z něj kompletní aplikace, hlavně Front Controller? Pokud ano, není na obou prostředích různé nastavení direktivy resources.frontController.params.displayExceptions ?
stepanka
Profil *
Aesir:
Výborně, tak tady byl kámen úrazu. Na serveru běží PHP 5.2 a já už mám na lokále PHP 5.3, tím pádem jsem vlastně změnila i Zend na verzi o jednu vyšší. Úplně jsem na to zapomněla, až ta Tvoje direktiva mě navedla k různým kódům ve Front Controlleru.

Takže PHP 5.3 a Zend 11 už nedovolí přetéct pole. Pokud mám pole $array = array(0 => "aaa", 1 => "bbb", 2=> "ccc") a chci vypsat $array[3], vyhodí to oproti PHP 5.2 a Zendu 10 Fatal error. To jen kdyby se to někdy někomu hodilo...

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