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

Reply via email to