Problém s prvkem pole $GLOBALS[0] v PHP 5.2.9
- BlueSpirit
- Člen | 8
Stáhnul jsem si poslední verzi Nette 2.0.12 pro PHP 5.2, protože na mém
webhostingu je PHP 5.2.9. Dosud jsem tam bez problémů používal Nette
2.0.3.
Po mnoha pokusech o zprovoznění základní kostry nové aplikace jsem
přišel na příčinu, a nevím, jestli na ni už někdo narazil.
Oproti Nette 2.0.3 se v 2.0.12 používá následující (nebo podobná)
konstrukce, která zajišťuje přenos proměnných do anonymní funkce:
set_error_handler(create_function('$severity, $message', 'extract($GLOBALS[0]['.array_push($GLOBALS[0], array('pattern'=>$pattern)).'-1], EXTR_REFS); // preg_last_error does not return compile errors
nebo
array_walk_recursive($args, create_function('& $val', 'extract($GLOBALS[0]['.array_push($GLOBALS[0], array('self'=>$self,'that'=> $that)).'-1], EXTR_REFS);...
A tady je ten problém – dostávám warning
PHP Warning: array_push(): First argument should be an array
a funkce se neprovede, následně skript spadne na nějaký fatal error. To
samé pro funkci extract()
.
Přišel jsem na to, že v této verzi 5.2.9 PHP neumí pracovat s prvky
pole $GLOBALS s numerickým klíčem – zde je to $GLOBALS[0]. Odmítá toto
chápat jako proměnnou, jako by nebyla definovaná – v jiné konstrukci
vypíše
Notice: Undefined variable: 0
Pokud nulu nahradím nějakým stringem (ale ne ‚0‘), vše je OK.
Setkal se s tím už někdo? Netuším, jestli je to problém této konkrétní verze PHP, nebo to je problém jen na tomto hostingu (klenot.cz). Pokud ano, bude to další důvod a asi definitivní ke změně hostingu…
Editoval BlueSpirit (10. 9. 2013 17:46)
- BlueSpirit
- Člen | 8
Díky,
takže změním webhosting. Už delší dobu mne tam dost věcí vytáčí –
např. soubory vytvořené PHP skriptem nemohu smazat přes FTP, protože mají
jiného vlastníka, o novou MySql databázi si musím žádat písemně, nemohu
ji vytvořit sám (a trvá to i několik dní) atd.
Nějaký tip na webhosting? Hodně se snaží Wedos – lákají slušnými
parametry a velkou slevou při přechodu od konkurence.
- Filip Procházka
- Moderator | 4668
Doporučuji wedos, sám také používám. Takto jednoduše si tam můžeš zapnout 5.4 a nemusíš čekat na žádného admina, který ti to tam zapne jen když má náladu ;)