Hi Stas, > Do you suggest that %ENV is getting lost along the way? Or can it be > some other problem? I don't have Oracle to test with. Or can you think > of some other way to reproduce the problem without depending on Oracle > being installed?
I think this reason is my configuration or DBI/DBD module problem. I checked some DBI/DBD module program(DBI.pm/Oracle.pm). In these program, %ENV and other variable was correct. But I didn't check more deep C program, I'll ask them to other place. > 1. > instead of using ModPerl::Registry, use Apache::Registry. Of course > configure <Location> to use Apache::Registry. > > use Apache::compat; > use Apache::Registry; # hopefull you have mod_perl 1.0 installed > > any change when you use the Apache::Registry from 1.0? Currently the > only difference (mainly) is that ModPerl::Registry doesn't chdir() into > the script's dir. (which eventually will change) I tried to use Apache::Registry, but it still showed same error in error_log as following. ----[error_log]---- DBI->connect(ynt0) failed: (UNKNOWN OCI STATUS 1804) OCIInitialize. Check ORACLE_HOME and NLS settings etc. at /yopt/httpd-2.0.39_prefork_perl5.6.1normal/cgi-bin/test1.cgi line 30 [Wed Jul 31 19:00:24 2002] [error] Cannot connect: (UNKNOWN OCI STATUS 1804) OCI Initialize. Check ORACLE_HOME and NLS settings etc. at /yopt/httpd-2.0.39_prefork_perl5.6.1normal/cgi-bin/test1.cgi line 30. -------- My machine is as following. - perl5.6.1(/yopt/perl5.6.1normal) - DBI-1.30 - DBD-Oracle-1.12 - mod_perl1.99_04(DSO build) - apache2.0.39(/yopt/httpd-2.0.39_prefork_perl5.6.1normal) - perl5.005_3(/yopt/perl5.0) - mod_perl1.26(static build, for installing Apache::Registry) - apache1.3.26(/yopt/apache_1.3.26) ----[httpd.conf]---- LoadModule perl_module modules/mod_perl.so ....... <IfModule mod_perl.c> PerlRequire "/yopt/httpd-2.0.39_prefork_perl5.6.1normal/conf/startup.pl" PerlModule ModPerl::Registry <Location /cgi-bin> SetHandler perl-script PerlResponseHandler Apache::Registry PerlOptions +ParseHeaders Options +ExecCGI </Location> </IfModule> -------- ----[startup.pl]---- #!/yopt/perl5.6.1normal/bin/perl use Apache2 (); use Apache::compat (); use lib qw(/yopt/perl5.0/lib/site_perl/5.005/i686-linux); use Apache::Registry (); 1; -------- Thank you very much, Atsushi. ----- Original Message ----- From: "Stas Bekman" <[EMAIL PROTECTED]> To: "Atsushi Fujita" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Wednesday, July 31, 2002 11:18 AM Subject: Re: mod_perl2 & DBD::Oracle problem > Atsushi Fujita wrote: > > Hi all, > > > > I am trying to use DBD::Oracle1.12 on mod_perl2. > > But it doesn't work fine. > > It shows error as following in error_log at $dbh = DBI->connect. > > > > ----[error_log]---- > > DBI->connect(ynt0) failed: (UNKNOWN OCI STATUS 1804) OCIInitialize. Check > > ORACLE_HOME and NLS settings etc. at > > /yopt/httpd-2.0.39_prefork_perl5.6.1normal/cgi-bin/test1.cgi line 42 > > [Mon Jul 29 20:15:37 2002] [error] 25703: ModPerl::Registry: `Cannot connect: > > (UNKNOWN OCI STATUS 1804) OCIInitialize. Check ORACLE_HOME and > > NLS settings etc.at > > /yopt/httpd-2.0.39_prefork_perl5.6.1normal/cgi-bin/test1.cgi line 42. > > -------- > > > > > > ----[test1.cgi]---- > > use DBI; > > > > my $dsn = 'dbi:Oracle:'; > > my $user = 'username/password'; > > my $password = ''; > > > > $ENV{'ORACLE_HOME'} = '/u01/app/oracle/product/9.0.1'; > > $ENV{'ORACLE_SID'} = 'ynt0'; > > $ENV{'NLS_LANG'} = 'japanese_japan.ja16euc'; > > > > print "ORACLE_HOME=$ENV{'ORACLE_HOME'}<br>\n"; > > print "ORACLE_SID=$ENV{'ORACLE_SID'}<br>\n"; > > print "NLS_LANG=$ENV{'NLS_LANG'}<br>\n"; > > print "DSN=$dsn$ENV{'ORACLE_SID'}<br>\n"; > > > > $dbh = DBI->connect("$dsn$ENV{'ORACLE_SID'}", $user, $password) > > or die "Cannot connect: ".$DBI::errstr; > > ... > > -------- > > > > At first, I suspect that the reason is %ENV in this script. > > But I set surely, and this output as following. > > > > ----[Broser output HTML]---- > > ORACLE_HOME=/u01/app/oracle/product/9.0.1 > > ORACLE_SID=ynt0 > > NLS_LANG=japanese_japan.ja16euc > > DSN=dbi:Oracle:ynt0 > > > > Internal Server Error > > The server encountered an internal error or misconfiguration and was unable to > > complete your request. > > .... > > -------- > > > > And if I turned off the mod_perl, it works fine on normal CGI-script. > > This error occurred only mod_perl. > > (I tested mod_perl1.26 & apache 1.3.26, it worked fine...) > > > > My machine is as following. > > - perl5.6.1(non thread) > > - DBI-1.30 > > - DBD-Oracle-1.12 > > - mod_perl1.99_04(DSO build) > > - apache2.0.39(prefork) > > > > > > ----[httpd.conf]----(is this wrong??) > > LoadModule perl_module modules/mod_perl.so > > ....... > > <IfModule mod_perl.c> > > PerlModule ModPerl::Registry > > <Location /cgi-bin> > > SetHandler perl-script > > PerlResponseHandler ModPerl::Registry > > PerlOptions +ParseHeaders > > Options +ExecCGI > > </Location> > > </IfModule> > > -------- > > Do you suggest that %ENV is getting lost along the way? Or can it be > some other problem? I don't have Oracle to test with. Or can you think > of some other way to reproduce the problem without depending on Oracle > being installed? > > Can you please test with the following two approaches: > > 1. > > instead of using ModPerl::Registry, use Apache::Registry. Of course > configure <Location> to use Apache::Registry. > > use Apache::compat; > use Apache::Registry; # hopefull you have mod_perl 1.0 installed > > any change when you use the Apache::Registry from 1.0? Currently the > only difference (mainly) is that ModPerl::Registry doesn't chdir() into > the script's dir. (which eventually will change) > > 2. use a mod_perl handler > > > __________________________________________________________________ > Stas Bekman JAm_pH ------> Just Another mod_perl Hacker > http://stason.org/ mod_perl Guide ---> http://perl.apache.org > mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com > http://modperlbook.org http://apache.org http://ticketmaster.com > >