Page 1 of 1

[gelöst] mod_fcgid und perl

Posted: 2009-07-06 22:04
by borlander
Hallo,

ich habe bis jetzt mod_fcgid mit PHP5 unter ubuntu 9.04 erfolgreich ans laufen gebracht. Will nun auch Perl Skripte ans laufen bringen. Dafür habe ich mal ganz naiv das gleiche für Perl gemacht

Aapche VHOST config:

Code: Select all

...
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
SuexecUserGroup "itjungs" "kunden"
AddHandler fcgid-script .php .pl
FCGIWrapper /var/www/virtual/domain.de/cgi-bin/php-fcgi-wrapper.bash .php
FCGIWrapper /var/www/virtual/domain.de/cgi-bin/perl-fcgi-wrapper.bash .pl

Alias /fcgi-bin/ /var/www/virtual/domain.de/cgi-bin/
<Location /fcgi-bin/>
        SetHandler fcgi-script
        Options +ExecCGI
</Location>
...
Der Wrapper

Code: Select all

#!/bin/sh
exec /usr/bin/perl
Mein test Perl Skript was ich in /var/www/virtual/domain.de/htdocs erstellt habe

Code: Select all

 #!/usr/bin/perl -w

use FCGI;
use strict;

my $Text = "Hallo Welt";

print "Content-type: text/htmlnn";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "n";
print "<html><head><title>Hallo Welt</title></head><body>n";
print "<h1>$Text</h1>n";
print "</body></html>n";
Wenn ich die test.pl im Browser ausführe, dann bekomme ich einen 500 Internal Server Error

Meine Error log spuckt dann folgendes aus.

Code: Select all

[Sat Jun 27 09:49:58 2009] [notice] mod_fcgid: call /var/www/virtual/domain.de/htdocs/test.pl with wrapper /var/www/virtual/domain.de/cgi-bin/php5-default/perl-fcgi-wrapper.bash
[Sat Jun 27 09:49:58 2009] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
[Sat Jun 27 09:49:58 2009] [error] [client 192.168.1.133] Premature end of script headers: test.pl
[Sat Jun 27 09:50:01 2009] [notice] mod_fcgid: process /var/www/virtual/domain.de/htdocs/test.pl(2307) exit(communication error), terminated by calling exit(), return code: 0
In meiner Suexec log sind keine Fehler

fcgid kann doch Perl?

Re: mod_fcgid und perl

Posted: 2009-07-06 23:37
by Roger Wilco
Der Standard Perl-Interpreter unterstützt kein FastCGI und dein Skript ist ein normales CGI-Skript. Das klappt so nicht, wie du es dir vorstellst.

Lies (und verstehe) http://search.cpan.org/~skimo/FCGI-0.67/FCGI.PL.

Re: mod_fcgid und perl

Posted: 2009-07-08 20:21
by borlander
OHH Sorry - das hatte ich auch schon versucht und vergessen zu erwähnen. Gleicher Fehler.

Code: Select all

use FCGI;

    my $count = 0;
    my $request = FCGI::Request();

    while($request->Accept() >= 0) {
        print("Content-type: text/htmlrnrn", ++$count);
    }

Re: mod_fcgid und perl

Posted: 2009-07-09 10:14
by dotme
Dein Wrapper-Skript ist falsch und überflüssig. Der blanke Perl-Interpreter versteht es nicht das FastCGI-Protokoll zu sprechen und kann so auch auf keinen Fall ermitteln welches Skript ausgeführt werden soll. Wenn Du den Wrapper weglässt und das zweite Skript verwendest, könntest Du schon einen Schritt weiter sein.
Ansonsten BTW wieso willst Du unbedingt FastCGI für Perl-Skripte einsetzen?

Re: mod_fcgid und perl

Posted: 2009-07-11 11:07
by borlander
Ich habe mich bei PHP für fcgid aufgrund der Performance und die Möglichkeit scripte mit suexec auszuführen entschieden.
Da ich schon fcgid einsetze, dachte ich das ich es auch für Perl einsetzen könnte. Wie müsste den dafür die Konfiguration aussehen? Bei Perl ist mich auch die Performance nicht so wichtig.

Bei fcgid und suexec muss ich doch einen wrapper nutzen, damit die userrechte stimmen?
Wenn ich mod_perl benutzte, kann ich suexec nicht benutzen?

Was gibt es für Möglichkeiten?

Re: mod_fcgid und perl

Posted: 2009-07-11 11:27
by Roger Wilco
borlander wrote:Bei fcgid und suexec muss ich doch einen wrapper nutzen, damit die userrechte stimmen?
Das ist eine Besonderheit von PHP. Bei anderen Skripten sollte es ausreichen, wenn auf das Skript die korrekten Rechte gesetzt sind und das Skript selbst FastCGI unterstützt.

Re: mod_fcgid und perl

Posted: 2009-07-11 12:08
by borlander
Einfacher gehts ja wohl kaum.

einfach FCGIWrapper weg lassen und alles läuft.

Ohh man wie peinlich. Vielen Dank