Problem pri upgradu na nove verze
- arron
- Člen | 464
Ahoj,
ono tohle tema sem mozna az tak moc nepatri, ale prijde mi to natolik
zajimave, ze to sem napisu.
I jal jsem se, iniciativne, vcera do upgradu php a nette na nejnovejsi verze.
A stala se mi takova zvlastnost. Po refreshi mi vsak Apache odejde do vecnych
lovist s hlaskou:
Parent: child process exited with status 3221225477 -- Restarting.
Jenom pro upresneni, pred tim chodilo vsechno naprosto v poradku. No tak jsem vyzkousel nekolik ruznych zpusobu vcetne UTFG. Naces jsem zjistil, ze status 3221225477 je jakasi chyba, ktera vznika leckdy a pri ledascem a zpravidla je chyba nekde v konfiguraci. Dalsi zajimavost, kterou jsem zjistil (a ktera me prinutila sem napsat) je, ze kdyz z adresare temp smazu vsechny soubory (tj. Nette si je pak vytvari znovu), tak vsechno po tento jeden request bezi jak ma. Dalsi refresh uz ale zase vede jen k hlasce s tlacitkem ‚Neodesilat‘…
Nemate nekdo prosim alespon nejaky napad, kudy bych se mohl zkusit ubirat?
- arron
- Člen | 464
Jan Tvrdík napsal(a):
A co se praví v logu Apache?
Ano, to se pravi v logu Apache (ta hlaska).
Panda napsal(a):
Stávalo se mi to taky, pomohlo vypnout rozšíření PHP jako jsou XDebug a eAccelerator.
Pridavam par radek z php.ini
extension=php_mbstring.dll
extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
extension=php_pdo.dll
extension=php_pdo_mysql.dll
;extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
extension=php_xsl.dll
zend_extension_ts="C:\php5\ext\ZendDebugger.dll"`
- arron
- Člen | 464
Tak oprava…precejenom je nekde v Nette nejaky problem:-) Co me k tomu vede?
Predne se mi presne ten samy problem objevil i na pocitaci, kde jsem neupgradoval verzi php. A objevil se presne ve chvili, kdy jsem prehral nove Nette (rev. 266).
Problem nastaval ve chvili, kdy jsem v danem requestu tahal nejaka data z databaze. Samotne pripojeni nevadilo (ze by nejake lazy??). Prvni request po tom, co jsem smazal kompletni adresar temp (cili vsechny nacachovane templaty a RobotLoader cache) probehl bez problemu. Dalsi request (F5) uz neprobehl a odeslal Apache do vecnych lovist s kritickou chybou:
szAppName : httpd.exe szAppVer : 2.2.3.0 szModName : php5ts.dll
szModVer : 5.2.9.9 offset : 000049c7
Tak jsem si chvili hral se svym zdrojovym kodem…pokud jsem zmenil verzi Nette na tu puvodni co jsem mel (rev. 220), problem se neobjevil. Pokud jsem zakomentoval vsechny pristupy do databaze, problem se neobjevil (rev. 266). Tak jsem drobil svoje pokusy dal…az jsem prisel na to mozna kapnul.
Problem nakonec zpusoboval vypis v sablone. Mam tridu, ktera pretezuje
metodu __toString(). Pokud do sablony dam jednoduse {$myClass}
tak
to zpusobuje uvedeny problem. Pokud explicitne zavolam
{$myClass->__toString()}
tak je vsechno v poradku.
Tot pricina problemu, nicmene absolutne netusim PROC?
A jeste to cele upresnim, pokud pouziju neescapovanou variantu
{!$myClass}
, tak je vsechno v pohode:-)
Editoval arron (14. 4. 2009 9:35)
- arron
- Člen | 464
Tak to skoro vypada, ze je to podobny, ne-li stejny, problem jako tady https://forum.nette.org/…iewtopic.php?…
- Jan Tvrdík
- Nette guru | 2595
Tak jsem dneska taky úspěšně shodil Apache. Tentokrát s použitím
Nette\Application\Link. Vyřešeno explicitním uvedením
__toString()
.
- David Grudl
- Nette Core | 8228
Nemůže to způsobit to, že se během __toString() vyhodí výjimka? Tohle PHP nezvládá.