ich möchte perl mit mod_fcgid zum laufen bringen. (Perl funktioniert bereits über AddHandler cgi-script .cgi .pl)
PHP läuft bei mir bereits ohne Probleme mit mod_fcgid und suExec.
Das Problem ist, dass ich immer nur einen Internal Server Error erhalte und das Script auch nicht aufgerufen wird, da die testdatei nicht erzeugt wird, auch an einem Premature end of script headers zu erkennen.
Vhost config:
Code: Select all
<VirtualHost *:80>
ServerName DOMAN.TLD
ServerAlias WWW.DOMAIN.TLD
SuexecUserGroup UID GID
DocumentRoot /var/www/UID//public/
ErrorLog "|usr/sbin/rotatelogs /var/www/UID//public//.logs//%Y-%m-%d.error.log 86400 120"
CustomLog "|usr/sbin/rotatelogs /var/www/UID//public//.logs//%Y-%m-%d.access.log 86400 120" combined
<Directory /var/www/UID//public//>
AddHandler fcgid-script .php .php3 .php4 .php5 .php6 .pl
FCGIWrapper /var/www/cgi-bin/UID/php-fcgi .php
FCGIWrapper /var/www/cgi-bin/UID/php-fcgi .php3
FCGIWrapper /var/www/cgi-bin/UID/php-fcgi .php4
FCGIWrapper /var/www/cgi-bin/UID/php-fcgi .php5
FCGIWrapper /var/www/cgi-bin/UID/php-fcgi .php6
FCGIWrapper /var/www/cgi-bin/UID/perl-fcgi .pl
# Scheint mir nicht erforderlich
Options +ExecCGI
AllowOverride AuthConfig Indexes FileInfo
Order Allow,Deny
Allow from All
</Directory>
</VirtualHost>
Code: Select all
#!/bin/sh
exec /usr/bin/perl
oder
#!/usr/bin/perl
Code: Select all
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $headline = "Ein sauberes Script!";
print "Content-type: text/htmlnn";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "n";
print "<html><head><title>Test</title></head><body>n";
print "<h1>$headline</h1>n";
print "<p>nur auf das CGI-Modul wurde hier verzichtet ;-)</p>n";
print "</body></html>n";
open(DATEI, ">server.cfg") || die "Datei nicht gefunden";
print DATEI "test";
close(DATEI);
Code: Select all
[Mon Jun 16 18:35:17 2008] [notice] mod_fcgid: call /var/www/UID/public/perl.pl with wrapper /var/www/cgi-bin/UID/perl-fcgi
[Mon Jun 16 18:35:17 2008] [notice] mod_fcgid: server /var/www/UID/public/perl.pl(2651) started
[Mon Jun 16 18:35:20 2008] [notice] mod_fcgid: process /var/www/UID/public/perl.pl(2651) exit(communication error), terminated by calling exit(), return code: 0
[Mon Jun 16 18:35:18 2008] [error] [client ] Premature end of script headers: perl.pl
Wenn ich perl mit der option -v aufufe erhalte ich folgendes errorlog:
Code: Select all
[Mon Jun 16 18:41:42 2008] [notice] mod_fcgid: call /var/www/UID/public/perl.pl with wrapper /var/www/cgi-bin/UID/perl-fcgi
[Mon Jun 16 18:41:42 2008] [notice] mod_fcgid: server /var/www/UID/public/perl.pl(2786) started
This is perl, v5.8.8 built for x86_64-linux-gnu-thread-multi
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
[Mon Jun 16 18:41:48 2008] [notice] mod_fcgid: process /var/www/UID/public/perl.pl(2786) exit(communication error), terminated by calling exit(), return code: 0
Ich hoffe auf Ratschläge wie ich Perl nun dazu bringen kann das Script auszuführen.
Das FCGID Wrapper Script wird aufgerufen. Dies ist an dem Versuch mit -v zu erkennen.
Ich habe auch mal anstelle von perl das php binary eingetragen. Dann wurde das perl script mit php geparst. (PHP Anweisungen wurden auch ausgeführt.)
Das Problem liegt also beim Aufruf des perl scripts vom Wrapper Script.
Die Berechtigungen scheinen mir alle in Ordnung, zumal es auch als PHP Script ausgeführt werden konnte.
Zudem hat es noch die Ausführen bits gesetzt.
Hoffentlich kann mir jemand weiterhelfen, warum das wrapper script das perl script nicht aufruft....