Hello Fredo Sartori,
Thursday, August 15, 2002, 1:44:34 PM, you wrote:
I mabe wrong, but what about to move code to setup ENV out from BEGIN
block ? I wrote simple test below:
# Test.pm
package Test;
use Apache::Constants qw ( :common );
BEGIN {
$ENV{FOO1} = 'BAR1';
$ENV{FOO2} = 'BAR2';
}
sub handler {
my $r = shift;
$r->print("Content-Type: text/plain\n\n");
print "FOO1=$ENV{FOO1}, FOO2=$ENV{FOO2}\n";
return OK;
}
1;
__END__
# httpd.conf
SetEnv FOO1 QQ1
SetEnv FOO2 QQ2
<Location /test>
SetHandler perl-script
PerlHandler Test
PerlSendHeader On
</Location>
One the first request of the fresh apache, I got:
FOO1=BAR1, FOO2=BAR2
On all subsequent requests:
FOO1=QQ1, FOO2=QQ2
I thing this is because mod_perl reset ENV hash on each request, but
I'm not sure. And I'm on Apache/1.3.23 (Unix) mod_perl/1.26. Not on
apache2. Did you confirm such behaviour of MP2 ? Does not find any
mention which confirm this in the guide :(
FS> Hi,
FS> I have problems connecting to an Oracle-DB through apache2. A test
FS> script, that works fine when run directly from the shell, fails to
FS> connect to the Orcacle DB, when run through apache. As far as I can see,
FS> the SID is not passed to the DB server.
FS> .....................................
FS> The foolowing message is found in the error log:
FS> [Thu Aug 15 09:25:46 2002] [error] 27824: ModPerl::Registry:
`DBI->>connect(sun1) failed: Error while trying to retrieve text for
FS> error ORA-12505 (DBD ERROR: OCIServerAttach) at
FS> /server/apache-dev/perl/test-oracle line 23
FS> '
FS> .......................................
FS> the log file of the Oracle listener on the DB box ahows:
FS> 15-AUG-02 09:25:46 *
FS>
(CONNECT_DATA=(SID=*)(SERVICE_NAME=sun1.)(CID=(PROGRAM=)(HOST=ollenhauer)(USER=www-adm)))
* (ADDRESS=(PROTOCOL=tcp)(HOST=172.22.250.27)(PORT=53048)) sh * * * 0
FS> ......................................
FS> The following versions are used:
FS> apache 2.0.39
FS> mod_perl: 1.99_04
FS> DBI: 1.30
FS> DBD-Oracle: 1.12
FS> .................
FS> #sample script:
FS> #!/usr/local/bin/perl -w
FS> BEGIN {
FS> $ENV{ORACLE_HOME} = '/opt/oracle/app/product/8.1.6';
FS> $ENV{ORACLE_SID} = 'SPD';
FS> }
FS> use CGI;
FS> use DBI;
FS> my $db_name = 'dbi:Oracle:sun1';
FS> my $db_user = 'webuser';
FS> my $db_pass = 'topsecret';
my $q=CGI->>new;
my $dbh = DBI->>connect($db_name, $db_user, $db_pass,
FS> {LongReadLen => 65534,
FS> RaiseError => 1,
FS> AutoCommit => 0});
FS> my $query = q{
FS> SELECT count (*)
FS> FROM asdb_mgr.stammdaten14
FS> WHERE bis is null };
my $sth = $dbh->>prepare($query);
my $rc = $sth->>execute();
my $count = $sth->>fetchrow_array;
print $q->>header;
FS> print "Anzahl der SPD-MdBs: $count\n";
$sth->>finish;
$dbh->>disconnect;
FS> ...............................
FS> httpd.conf:
FS> Alias /perl /server/apache-dev/perl
FS> <IfModule mod_perl.c>
FS> PerlRequire "/server/apache-dev/conf/perl-startup.pl"
FS> <Location /perl>
FS> SetHandler perl-script
FS> PerlResponseHandler ModPerl::Registry
FS> PerlOptions +ParseHeaders
FS> Options +ExecCGI
FS> </Location>
FS> </IfModule>
FS> ......................................
FS> perl-startup.sh:
FS> # file:perl-startup.pl
FS> # ---------------
FS> use Apache2 ();
FS> use Apache::compat ();
FS> use lib qw(/server/apache-dev/perl/);
FS> use ModPerl::Util ();
FS> use Apache::RequestRec ();
FS> use Apache::RequestIO ();
FS> use Apache::RequestUtil ();
FS> use Apache::Server ();
FS> use Apache::ServerUtil ();
FS> use Apache::Connection ();
FS> use Apache::Log ();
FS> use APR::Table ();
FS> use ModPerl::Registry ();
FS> use Apache::Const -compile => ':common';
FS> use APR::Const -compile => ':common';
FS> 1;
FS> ..........................................
FS> Thanks,
FS> Fredo
--
WBR, Mike P. Mikhailov
mailto:[EMAIL PROTECTED]
You can have my Unix system when you pry it from my cold, dead fingers