9 # CGI initializer: opens SCRIPT_FILENAME
11 $PLP::print = 'print';
13 if (defined $ENV{PATH_TRANSLATED}) {
14 # Physical mapping provided; SCRIPT_* points to handler script
16 my $path = delete $ENV{PATH_TRANSLATED};
18 while (not -f $path) {
19 if (not $path =~ s/(\/+[^\/]*)$//) {
20 printf STDERR "PLP: Not found: $path$path_info ($ENV{REQUEST_URI})\n";
21 PLP::error(undef, 404);
24 # move last path element from PLP_*NAME to PATH_INFO
25 $path_info = $1 . $path_info;
27 $ENV{PLP_FILENAME} = $path;
28 $ENV{PLP_NAME} = delete $ENV{PATH_INFO};
29 if (defined $path_info) {
30 $ENV{PLP_NAME} =~ s/\Q$path_info\E$//;
31 $ENV{PATH_INFO} = $path_info;
34 # SCRIPT_*/PATH_INFO already modified to target script
35 # (Lighttpd cgi.assign)
36 $ENV{PLP_FILENAME} = $ENV{SCRIPT_FILENAME};
37 $ENV{PLP_NAME} = $ENV{SCRIPT_NAME};
40 if (not -r $ENV{PLP_FILENAME}) {
41 print STDERR "PLP: Can't read: $ENV{PLP_FILENAME} ($ENV{REQUEST_URI})\n";
42 PLP::error(undef, 403);
47 qw(SCRIPT_NAME SCRIPT_FILENAME),
48 grep /^REDIRECT_/, keys %ENV
51 my ($file, $dir) = File::Basename::fileparse($ENV{PLP_FILENAME});
54 $PLP::code = PLP::source($file, 0, undef, $ENV{PLP_FILENAME});
57 # This is run by the CGI script. (#!perl \n use PLP::CGI; PLP::CGI::everything;)