File Coverage

blib/lib/Plack/App/PHPCGIFile.pm
Criterion Covered Total %
statement 24 39 61.5
branch 0 4 0.0
condition 0 6 0.0
subroutine 8 11 72.7
pod 1 3 33.3
total 33 63 52.3


line stmt bran cond sub pod time code
1             package Plack::App::PHPCGIFile;
2              
3 1     1   22501 use strict;
  1         3  
  1         38  
4 1     1   5 use warnings;
  1         2  
  1         30  
5 1     1   923 use parent qw(Plack::App::File);
  1         318  
  1         5  
6 1     1   30242 use Plack::Util::Accessor qw(php_cgi);
  1         4  
  1         5  
7 1     1   546 use Plack::App::PHPCGI;
  1         3  
  1         71  
8 1     1   7 use File::Which;
  1         4  
  1         51  
9 1     1   6 use File::Spec;
  1         3  
  1         19  
10 1     1   5 use Carp;
  1         2  
  1         339  
11              
12             our $VERSION = '0.04';
13              
14             sub prepare_app {
15 0     0 1   my $self = shift;
16 0           my $php_cgi = $self->php_cgi;
17 0   0       $php_cgi ||= which('php-cgi');
18 0 0         croak "cannot find 'php-cgi' command" unless -x $php_cgi;
19 0           $self->php_cgi($php_cgi);
20             }
21              
22 0     0 0   sub allow_path_info { 1 }
23              
24             sub serve_path {
25 0     0 0   my($self, $env, $file) = @_;
26 0 0         if ( $file =~ m!\.php$! ) {
27 0           my $script = File::Spec->rel2abs($file);
28 0   0       my $app = $self->{_wrap}->{$script} ||= Plack::App::PHPCGI::wrap_php($self->php_cgi, $script);
29 0           local @{$env}{qw(SCRIPT_NAME PATH_INFO)} = @{$env}{qw( plack.file.SCRIPT_NAME plack.file.PATH_INFO )};
  0            
  0            
30 0           return $app->($env);
31             }
32 0           $self->SUPER::serve_path($env,$file);
33             }
34              
35             1;
36              
37             __END__