I've run into this before.   It's a bug in v1.07 of Apache::DBI

Open up the Apache/DBI.pm source file (on one of my test systems it's installed in /usr/lib/perl5/site_perl/5.8.8/Apache/DBI.pm) aind the following block of code:
/   if (!$Rollback{$Idx}) {
       my $r;
       if (MP2) {
               $r = Apache2::RequestUtil->request;
               }
       elsif (Apache->can('push_handlers')) {
           $r = 'Apache';
       }
/
The problem with this is that if you're calling this from startup.pl you're not actually in a request at that point (as someone already mentioned) so without the eval there the script dies.

Fix it by wrapping the "/$r = Apache2::RequestUtil->request;/" part in an eval so it looks like this: /eval { $r = Apache2::RequestUtil->request;}

/






André Warnier wrote:
Kulasekaran, Raja wrote:
Hi,

Thanks for your mail. I did tried. It's not working .

Yes, I am sorry.  I did not look close enough at the following error :

[Thu Sep 10 14:39:30 2009] [error] Global $r object is not available.
Set:\n\tPerlOptions +GlobalRequest\nin httpd.conf at
/var/www/audashboard/exec/startup.pl line 24.\nCompilation failed in
require at (eval 5) line 1.\n

In a mod_perl *request* handler, the first argument
(my $r = shift;)
is usually a pointer to the current Request object.

But in your startup script (startup.pl), that is not the case, because when that script is run, there is no request yet. I don't know what you are trying to do with $r in that startup script, but something is wrong and maybe the error message above is misleading.
(I mean that it may have nothing to do with GlobalRequest at that stage.)

Reply via email to