"Grigoriy G. Vovk" wrote:
>
> Here are my files:
>
> httpd.conf -
>
> Alias /perl/ "/usr/local/www/perl/"
> PerlModule Apache::DBI
> PerlRequire /usr/local/www/startup.pl
> PerlModule Apache::Registry
> PerlModule Apache::DBI
> PerlSetEnv PERLDB_OPTS "NonStop=1 LineInfo=/tmp/db.out AutoTrace=1 frame=2"
> PerlModule Apache::DB
> <Location "/perl">
> PerlFixupHandler Apache::DB
> SetHandler perl-script
> PerlHandler Apache::Registry
> Options +ExecCGI
> AllowOverride None
> Order allow,deny
> Allow from all
> PerlSendHeader on
> </Location>
>
> startup.pl -
>
> use strict;
> $ENV{MOD_PERL} or die "not running under mod_perl!";
> use Apache::DBI ();
> use Apache;
> use Apache::Cookie;
> use Apache::Request;
> use Carp();
> $SIG{__WARN__} = \&Carp::cluck;
> sub My::ProxyRemoteAddr ($) {
> my $r = shift;
> return unless ($r->connection->remote_ip eq "127.0.0.1");
> if (my ($ip) = $r->header_in('X-Forwarded-For') =~ /([^,\s]+)$/) {
> $r->connection->remote_ip($ip);
> }
> return ;
> }
> Apache::DBI->connect_on_init
> ("dbi:Pg:dbname=jewelry",'','',
> {
> PrintError => 1,
> RaiseError => 0,
> AutoCommit => 1,
> });
>
> my programm -
>
> use strict;
> use Apache::DBI;
not necessary, your script should run unchanged under Apache::DBI
> $Apache::DBI::DEBUG = 2;
> use Apache;
> use Carp();
> local $SIG{__WARN__} = \$Carp::cluck;
> my $dbh;
> $dbh = DBI->connect("dbi:Pg:dbname=jewelry", '', '');
if you don't use exactly the same connect-string, as in startup.pl, you
will not get a persistent connection.
> my $r=shift;
> $r->send_http_header('text/html');
> my $sql = "select * from tbl_category";
> my $sth = $dbh->prepare($sql);
> my $rs = $sth->execute();
> my @rs;
> while(@rs = $sth->fetchrow_array){
> $r->print("$rs[0]\t$rs[1]\n");
> }
> $sth->finish;
> $dbh->disconnect;
>
> and httpd-error.log -
>
> [Sat May 5 16:35:28 2001] [notice] FastCGI: process manager initialized (pid 14154)
> [Sat May 5 16:35:29 2001] [notice] Apache/1.3.19 (Unix) mod_fastcgi/2.2.10
>mod_perl/1.25
> configured -- resuming normal operations
> Default die handler restored.
> 14156 Apache::DBI need ping: yes
> 14156 Apache::DBI new connect to
>'dbname=jewelryPrintError=1AutoCommit=1'
> [Sat May 5 16:39:27 2001] [error] Not a subroutine reference at
> (eval 225)[/usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd/Apache/Registry.pm:177]
>line 73.
>
> Line 73 is "my $rs = $sth->execute();"
your $sth is undefined.
>
> So, does anybody understand what's going on?
> Why my programm doesn't work?
> It works as plain perl script perfect.
> And Apache::Session::Store::Postgres works perfect - it mean, mod_perl
> works with Postgres.
>
> Thank's,
>
> my best regards,
> -----------------------------
> Grigoriy G. Vovk
always check the return values of all DBI-methods, eg
instead of: $dbh = DBI->connect(..);
use: $dbh = DBI->connect(..) or die "db connect error";
and instead of: my $sth = $dbh->prepare($sql);
use: my $sth = $dbh->prepare($sql) or die $DBI::errstr;
or something equivalent.
Edmund
--
http://www.edmund-mergl.de
fon: +49 700 edemergl