Changeset 1563
- Timestamp:
- 12/24/08 00:22:13 (3 years ago)
- Location:
- trunk/FastCGIEngineContrib
- Files:
-
- 2 edited
-
bin/foswiki.fcgi (modified) (4 diffs)
-
lib/Foswiki/Engine/FastCGI.pm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/FastCGIEngineContrib/bin/foswiki.fcgi
r1349 r1563 1 #!/usr/bin/perl -w1 #!/usr/bin/perl 2 2 # Foswiki - The Free and Open Source Wiki, http://foswiki.org/ 3 3 # … … 25 25 26 26 use strict; 27 use warnings;28 27 29 28 BEGIN { 30 29 $Foswiki::cfg{Engine} = 'Foswiki::Engine::FastCGI'; 31 @INC = ( '.', grep { $_ ne '.' } @INC);30 @INC = ( '.', grep { $_ ne '.' } @INC ); 32 31 delete $ENV{FOSWIKI_ACTION} if exists $ENV{FOSWIKI_ACTION}; 33 32 require 'setlib.cfg'; … … 36 35 use Getopt::Long; 37 36 use Pod::Usage; 37 use Foswiki; 38 use Foswiki::UI; 39 40 eval { eval substr($0, 0, 0) }; 41 Foswiki::Engine::FastCGI::reExec() unless $@; 38 42 39 43 my ( $listen, $nproc, $pidfile, $manager, $detach, $help ); … … 49 53 pod2usage(1) if $help; 50 54 51 use Foswiki;52 use Foswiki::UI;53 54 55 $Foswiki::engine->run( 55 56 $listen, 56 { nproc => $nproc, 57 pidfile => $pidfile, 58 manager => $manager, 59 detach => $detach, 57 { 58 nproc => $nproc, 59 pidfile => $pidfile, 60 manager => $manager, 61 detach => $detach, 60 62 } 61 63 ); -
trunk/FastCGIEngineContrib/lib/Foswiki/Engine/FastCGI.pm
r1354 r1563 35 35 36 36 use FCGI; 37 use IO::Handle;38 37 39 38 sub run { … … 41 40 42 41 my $sock = 0; 43 if ( $listen) {44 $sock = FCGI::OpenSocket( $listen, 100 )42 if ($listen) { 43 $sock = FCGI::OpenSocket( $listen, 100 ) 45 44 or die "Failed to create FastCGI socket: $!"; 46 45 } 47 46 my %env = (); 48 47 $args ||= {}; 49 my $r = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $sock, &FCGI::FAIL_ACCEPT_ON_INTR); 48 my $r = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $sock, 49 &FCGI::FAIL_ACCEPT_ON_INTR ); 50 50 my $manager; 51 51 52 52 if ($listen) { 53 53 $args->{manager} ||= 'FCGI::ProcManager'; … … 75 75 CGI::initialize_globals(); 76 76 my $req = $this->prepare; 77 if ( UNIVERSAL::isa( $req, 'Foswiki::Request') ) {77 if ( UNIVERSAL::isa( $req, 'Foswiki::Request' ) ) { 78 78 my $res = Foswiki::UI::handleRequest($req); 79 79 $this->finalize( $res, $req ); … … 101 101 # way, SUPER::preparePath works fine. 102 102 103 $ENV{PATH_INFO} =~ s#^$Foswiki::cfg{ScriptUrlPath}/*#/#; 103 $ENV{PATH_INFO} =~ s#^$Foswiki::cfg{ScriptUrlPath}/*#/# 104 if $ENV{PATH_INFO}; 104 105 $this->SUPER::preparePath(@_); 105 106 } 106 107 107 108 sub write { 108 my ( $this, $buffer) = @_;109 my ( $this, $buffer ) = @_; 109 110 syswrite STDOUT, $buffer; 111 } 112 113 sub reExec { 114 require Config; 115 $ENV{PERL5LIB} .= join $Config::Config{path_sep}, @INC; 116 $ENV{PATH} = $Foswiki::cfg{SafeEnvPath}; 117 my $perl = $Config::Config{perlpath}; 118 my ($script) = $0 =~ /^(.*)$/; 119 exec $perl, '-wT', $script, map { /^(.*)$/; $1 } @ARGV; 110 120 } 111 121 … … 127 137 umask(0); 128 138 chdir '/'; 129 open STDIN, "+</dev/null" or die $!;130 open STDOUT, ">&STDIN" or die $!;131 open STDERR, ">&STDIN" or die $!;139 open STDIN, "+</dev/null" or die $!; 140 open STDOUT, ">&STDIN" or die $!; 141 open STDERR, ">&STDIN" or die $!; 132 142 POSIX::setsid(); 133 143 }
Note: See TracChangeset
for help on using the changeset viewer.
