Browse Source

Bug 27246: Remove obsolete BEGIN code from C4::Context

We don't longer enter the HTTP_USER_AGENT conditional in the BEGIN block
of C4::Context. It was used when apache only was used.

I am suggesting to remove it but keep the $CGI::VERSION < 4.08 condition
to keep support of all version (not sure it's needed but won't hurt).

I have not found a lot of occurrences of KOHA_BACKTRACES and I am
assuming not much people are using it, we should prefer the dev_install
flag instead (to set environment="development" when plack is started and
enabled the starman trace)

Test plan:
Regression test what you think is useful
Confirm the above statements

Signed-off-by: Victor Grousset/tuxayo <>
Signed-off-by: David Cook <>
Signed-off-by: Martin Renvoize <>

Signed-off-by: Jonathan Druart <>
Jonathan Druart 4 months ago
1 changed files with 5 additions and 60 deletions
  1. +5

+ 5
- 60
C4/ View File

@@ -21,74 +21,19 @@ use Modern::Perl;

use vars qw($AUTOLOAD $context @context_stack);
require CGI::Carp;
# FIXME for future reference, CGI::Carp doc says
# "Note that fatalsToBrowser does not work with mod_perl version 2.0 and higher."
import CGI::Carp qw(fatalsToBrowser);
sub handle_errors {
my $msg = shift;
my $debug_level;
eval {C4::Context->dbh();};
if ($@){
$debug_level = 1;
else {
$debug_level = C4::Context->preference("DebugLevel");

print q(<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html lang="en" xml:lang="en" xmlns="">
<head><title>Koha Error</title></head>
if ($debug_level eq "2"){
# debug 2 , print extra info too.
my %versions = get_versions();

# a little example table with various version info";
print "
<h1>Koha error</h1>
<p>The following fatal error has occurred:</p>
<tr><th>Apache</th><td> $versions{apacheVersion}</td></tr>
<tr><th>Koha</th><td> $versions{kohaVersion}</td></tr>
<tr><th>Koha DB</th><td> $versions{kohaDbVersion}</td></tr>
<tr><th>MySQL</th><td> $versions{mysqlVersion}</td></tr>
<tr><th>OS</th><td> $versions{osVersion}</td></tr>
<tr><th>Perl</th><td> $versions{perlVersion}</td></tr>

} elsif ($debug_level eq "1"){
print "
<h1>Koha error</h1>
<p>The following fatal error has occurred:</p>
} else {
print "<p>production mode - trapped fatal error</p>";
print "</body></html>";
## give a stack backtrace if KOHA_BACKTRACES is set
## can't rely on DebugLevel for this, as we're not yet connected
$main::SIG{__DIE__} = \&CGI::Carp::confess;
if ( $ENV{'HTTP_USER_AGENT'} ) { # Only hit when plack is not enabled

# Redefine multi_param if cgi version is < 4.08
# Remove the "CGI::param called in list context" warning in this case
require CGI; # Can't check version without the require.
if (!defined($CGI::VERSION) || $CGI::VERSION < 4.08) {
require CGI; # Can't check version without the require.
if ( !defined($CGI::VERSION) || $CGI::VERSION < 4.08 ) {
no warnings 'redefine';
*CGI::multi_param = \&CGI::param;
use warnings 'redefine';
} # else there is no browser to send fatals to!

use Carp;
use DateTime::TimeZone;