I've been away for a while, so I'm sorry if this reply is coming too
late, but if not then hopefully it helps...

        Can you try changing the call to prepare() to prepare_cached() and
try again?

        Also, I noticed that in the startup.pl script you included earlier
that there's no "use strict;" line.  Are you using this in the other
scripts in which your users are encountering the HTTP 500 error?

> Thanks Perrin.
>
> The "end user" is getting the following:
>
> HTTP/1.1 500 Internal Server Error
> Date: Tue, 08 Oct 2024 20:17:24 GMT
> Server: Apache/2.4.57 (AlmaLinux) OpenSSL/3.0.7 mod_perl/2.0.12 Perl/v5.32.1
> Content-Length: 333
> Connection: close
> Content-Type: text/html; charset=iso-8859-1
>
> <h1>Software error:</h1>
> <pre>Can't call method &quot;prepare&quot; on an undefined value at
> /var/www/holidayshop/perl/validatephone.pl line 26.
> </pre>
> <p>
> For help, please send mail to the webmaster (<a
> href="mailto:redacted";>redacted</a>),
> giving this error message
> and the time and date of the error.
>
> The version of Perl that mod_perl is using is apparently the exact same one
> as is on the system.
>
> mod_perl:  Embedded Perl version *v5.32.1*
>
> $ perl -v
>
> This is perl 5, version 32, subversion 1 (v5.32.1)
>
> I'm not setting any ENV variables that I know of..  Perhaps you have some
> examples of these that come to mind that might be the case?
>
> Thanks again for your help.
>
> On Thu, Oct 10, 2024 at 12:28PM Perrin Harkins <phark...@gmail.com> wrote:
>
> > DBI is supposed to install the driver when you call connect(), although
> > that does mean any code loaded there isn't shared in memory.
> >
> > My question would be, did you get any actual failed responses in your load
> > test, or just these error log messages? If all the requests succeeded, then
> > I would suspect something where this code is somehow being run from the
> > parent process. (Sorry if my terminology is off; I'm a mod_perl 1 user.)
> >
> > If not, it could be that your validatephone.pl code does fine when the
> > connection is opened for it by connect_on_init(), but after a connection
> > gets closed for some reason, it can't reconnect because the environment is
> > different. Maybe the path for shared objects is different at that point.
> > I'd try to figure out what's giving it that "not initialized" text in the
> > error message.
> >
> > Other things to consider:
> > - Are your DBI/DBD modules compiled with the same Perl that mod_perl was
> > compiled with?
> > - Are you setting any ENV variables that might be needed by DBI/mysql and
> > might not get passed through to the child process?
> >
> > On Thu, Oct 10, 2024 at 11:02AM Tim Lank <timl...@timlank.com> wrote:
> >
> >> Thanks Ed.  I'll add it and see if it helps.  My load testing phase is
> >> already completed, but I may get a chance to retest next year.
> >>
> >> On Thu, Oct 10, 2024 at 6:32AM Edward J. Sabol <edwardjsa...@gmail.com>
> >> wrote:
> >>
> >>> On Oct 7, 2024, at 5:55PM, Tim Lank <timl...@timlank.com> wrote:
> >>>
> >>> I have the following in my startup.pl:
> >>>
> >>> use CGI qw(:all);
> >>> use CGI::Carp 'fatalsToBrowser', 'carpout';
> >>> use List::Util 'shuffle';
> >>> CGI->compile(':all');
> >>> Apache::DBI->connect_on_init
> >>>
> >>>   ("DBI:mysql:holidayshop",
> >>>
> >>>
> >>> I don't know if it will help or not, but, before the above lines, your
> >>> startup.pl should also have the following lines:
> >>>
> >>> use DBI;
> >>> DBI->install_driver('mysql');
> >>> use Apache::DBI;
> >>>
> >>> Regards,
> >>> Ed
> >>>
> >>>
>


Randolf Richardson, CNA - rand...@inter-corporate.com
Inter-Corporate Computer & Network Services, Inc.
Beautiful British Columbia, Canada
https://www.inter-corporate.com/


Reply via email to