mod_perl: %ENV a system()

Jan Kasprzak kas na fi.muni.cz
Pátek Srpen 12 12:56:40 CEST 2005


Honza Pazdziora wrote:
: 	http://perl.apache.org/docs/2.0/user/troubleshooting/troubleshooting.html#C_Libraries_Don_t_See_C__ENV__Entries_Set_by_Perl_Code
: 
: bych si tipnul, ze pouzivas perl-script a ne modperl. Takze size je
: nastavene %ENV, ale ne to, co se predava dalsimu procesu.
: 
	Jo, tak nejak jsem to vyhodnotil. Ano, perl-script - potrebuju
STDIN/STDOUT.

: V takovem pripade je potreba to do tono environ[] explicitne dostat.
: Dokumentace, ktera Te zajima, ze
: 
: 	http://perl.apache.org/docs/2.0/api/Apache2/SubProcess.html#C_spawn_proc_prog_
: 	http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_subprocess_env_
: 
: Se system() jsem problemy nemel, s open (a open2 a open3) ano, ty
: filehandly se chovaly divne, takze tam bylo nejrozumnejsi si ten
: spawn_proc_prog necim obalit (pokud by to chtel clovek pouzivat
: jak z CGI, tak z mod_perl2) a misto open / open2 volat takovy
: wrapper, ktery pro mod_perlove prostredi prislusne polozky z %ENV
: nastavi (treba pomoci Env::C).
: 
: Doufam, ze odpovidam alespon castecne na to, na co se ptas.

	Ja myslim ze odpovidas, diky. Teda idealni by bylo jeste
neco kde bych jednoduse rekl, ze fakt chci aby %ENV bylo systemove
environ, protoze jedu v MPM prefork takze to nicemu nevadi. Sice
ted umim upravit aplikaci, u ktere vim ze nefunguje.
ale radsi bych to mel pro vsechny, aniz bych musel cekat, ktera kde
zacne nejakym vice nebo mene napdanym zpusobem chybovat.

	Celkove me mod_perl v teto veci dost s**e - je to sice perfektni
prostredi pro _nove_ programy, ale stavajici aplikace se v tom spousti
fakt divne s takovymito nahodnymi vypadky. U ModPerl::PerlRun a dalsich
pisou na zacatku manualove stranky "Run unmodified CGI scripts", a teprve
az clovek narazi, tak najednou zjisti, ze nekde jinde (sekce troubleshooting)
je napsane, ze to vlastne ani tak "unmodified" neni. U SetHandler perl-script
sice pisou, ze globalni veci jako %ENV jsou pred requestem ulozene
a po requestu obnovene, ale nikde se tam nepise, ze to %ENV navic jeste
neni systemovy environ. :-(

-Yenya


-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
>>> $ cd my-kernel-tree-2.6                                              <<<
>>> $ dotest /path/to/mbox  # yes, Linus has no taste in naming scripts  <<<


Další informace o konferenci Linux