[Koha] premature end of script headers

Rick Welykochy rick at praxis.com.au
Fri Jan 19 15:10:29 NZDT 2007


Robert Lyon wrote:

> Is that error from the koha error logs?

The apache error log

> if so try looking at the apache error log too - it might give some idea
> but to me it looks like the acqui-home.pl might have the wrong file 
> permissions on it and can't run

No, the script *used to* run fine.

I found the cause of the problem by running the script in the
shell. I could no longer connect to the MySQL database server
since I had changed the name of the database user.

Now the problem is fixed.
This raises a couple of issues:

1. Why is the admin login username (to the Intranet) the same as
    the database username? The two should be separate, esp. for
    security reasons.

2. When the script that fails runs in the shell, I can clearly
    see the error:

    perl ./intranet/cgi-bin/mainpage.pl
    DBI connect('eesv2pre5:localhost','kohaadmin',...) failed: Access denied for user 'kohaadmin'@'%'
    to database'Koha' at /usr/local/koha/intranet/modules/C4/Context.pm line 411
    Can't call method "prepare" on an undefined value at /usr/local/koha/intranet/modules/C4/Koha.pm line 388.

    Surely the same error message should be sent to the Apache log, rather
    than "premature end of script headers". I think the problem lies in the way
    Perl is being used. If Koha used mod_perl instead, this problem would not occur,
    since mod_perl can do things like ensure you have a valid database connection
    during Apache initialisation -- if there is a problem, mod_perl can be
    configured to abort the Apache startup. This would be a Good Thing (tm).
    Another Good Thing is mod_perl will run the scripts 100 x faster!

A way to avoid the cryptic "Premature end of script headers" in scripts
is to use the exception handling facility of Perl.

For programmers only: each script is in an eval { } block and any
errors caught, the HTTP headers output and then the error raised
properly with Apache. I've been using this approach for years in
LAMP apps -- works a treat, and no moer tears ;)

My concern the the inordinate waste of hundreds of Koha users/installers
time with the cryptic error message which can easily be ameliorated
by a few programming tweaks. (This error is constantly being raised
on the Koha user's mailing list)

We can further discuss this on the koha-devel list if you wish.

Advice to Koha users/installers: if you see the cryptic error message
run the same script in the shell:

PERL5LIB=/usr/local/koha/intranet/modules perl {FULL_PATH_TO_SCRIPT_HERE}


cheers
rickw




> Rick Welykochy wrote:
> 
>> I am running Koha/2.2.7 on LAMP.
>>
>> One of the scripts is causing a 500 error. The error log does not show
>> any perl error report, rather just the following:
>>
>> [Fri Jan 19 00:14:18 2007] [error] [client 192.168.0.3] Premature end 
>> of script headers: acqui-home.pl
>>
>> Any idea what causes this?




-- 
_________________________________
Rick Welykochy || Praxis Services

The 7 R's of Windows support: retry, restart, reboot, reconfigure,
reinstall, reformat and finally, replace with Linux.


More information about the Koha mailing list