Problém s prvkem pole $GLOBALS[0] v PHP 5.2.9

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
BlueSpirit
Člen | 8
+
0
-

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)

mkoubik
Člen | 728
+
0
-

S tou chybou ti neporadím, ale doporučil bych ti upgrade na vyšší verzi PHP (případně změnu hostingu). Aktuální verze PHP je 5.5.3, řada 5.2 je již dva a půl roku nepodporovaná. Do řady 5.3 budou ještě rok začleňovány bezpečnostní opravy a pak taky šlus.

BlueSpirit
Člen | 8
+
0
-

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
+
0
-

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 ;)