Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich an der Web-Site anzumelden:
 
Thema ohne neue Antworten

Confixx Vhost Cgi/fascgi um HIlfe bitte


Autor Nachricht
Verfasst am: 29.06.2007 [15:52]
Accessdenied
Themenersteller
Dabei seit: 29.06.2007
Beiträge: 4
also ich habe das problem das das cgi nicht funktioniert kann mir jemand bitte helfen

[b]Server ist[/b:cb66458aaf] : System Linux v1192.ncsrv.de 2.6.9-023stab043.1-smp #1 SMP Mon Mar 5 16:35:19 MSK 2007 i686
[b]Server API[/b:cb66458aaf]: CGI/FastCGI

Die [b]confixx_vhost.conf [/b:cb66458aaf]:
[code:1:cb66458aaf]################### CONFIXX APACHE VHOSTS FILE ##########################
# created at Fri Jun 29 02:30:02 2007
#
#            !!! Do not make any changes in this file !!!
#
# 1. We cannot guarantee that the software will work properly, if
# the contents of this file are modified.
# 2. This file would be rewritten each time the Confixx software requires
# to update Apache configuration to bring user/domain settings in effect.
#
# If you need to have some custom content in this file, you can use
# "httpd special" function in the Confixx Control Panel or create
# an empty webX.lock file and edit webX.conf by the way you want in this
# case Confixx will not touch the configuration file.
#
##########################################################################

UseCanonicalName Off
LogFormat "%V:#:%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" confixx
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" confixx2
CustomLog |/root/confixx/pipelog.pl confixx

<Directory "/home/www">
  <Files ~ "^.ht">
    deny from all
  </Files>
  AllowOverride None
  AllowOverride Indexes  AuthConfig Limit  FileInfo
  Options None
  Options +FollowSymLinks +Includes
</Directory>

NameVirtualHost 89.110.148.140:80

<VirtualHost 89.110.148.140:80>

  ServerName 89.110.148.140

  DocumentRoot /home/www/confixx/html/gesperrt

  Options +FollowSymLinks
  suPHP_ConfigPath /etc/apache2/confixx_phpini
  <IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm index.shtml index.cgi
  </IfModule>

</VirtualHost>

NameVirtualHost 89.110.148.140:443
<VirtualHost 89.110.148.140:443>

  ServerName 89.110.148.140

  DocumentRoot /home/www/confixx/html/gesperrt

  Options +FollowSymLinks
  suPHP_ConfigPath /etc/apache2/confixx_phpini
  <IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm index.shtml index.cgi
  </IfModule>

  <IfModule mod_ssl.c>
    SSLEngine on
    SSLCertificateKeyFile /etc/ssl.key/v1192.ncsrv.de.key
    SSLCertificateFile /etc/ssl.crt/v1192.ncsrv.de.crt
    SetEnvIf User-Agent ".*MSIE.*"
      nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

    <Files ~ ".(cgi|shtml|phtml|php3?)">
      SSLOptions +StdEnvVars
    </Files>
  </IfModule>

</VirtualHost>


include /etc/apache2/confixx_vhosts/*.conf[/code:1:cb66458aaf]

Meine Vhost web2.conf :
[code:1:cb66458aaf]################### CONFIXX APACHE VHOSTS FILE ##########################
# created at Fri Jun 29 02:30:02 2007
#
#            !!! Do not make any changes in this file !!!
#
# 1. We cannot guarantee that the software will work properly, if
# the contents of this file are modified.
# 2. This file would be rewritten each time the Confixx software requires
# to update Apache configuration to bring user/domain settings in effect.
#
# If you need to have some custom content in this file, you can use
# "httpd special" function in the Confixx Control Panel or create
# an empty webX.lock file and edit webX.conf by the way you want in this
# case Confixx will not touch the configuration file.
#
##########################################################################

<Directory "/home/www/web2/html">
  Options -FollowSymLinks -SymLinksIfOwnerMatch
  <IfModule mod_access.c>
    Allow from all
  </IfModule>
  suPHP_engine on
</Directory>

<Directory "/home/www/web2/html/cgi-bin/">
  <IfModule mod_python.c>
    <Files ~ ".py">
      AddHandler python-program .py
      PythonHandler mod_python.cgihandler
    </Files>
  </IfModule>
</Directory>
<VirtualHost 89.110.148.186:80>
  ServerName web2.v1192.ncsrv.de
  ServerAlias www.sascha.v1192.ncsrv.de sascha.v1192.ncsrv.de sascha.maynz.com  
  www.sascha.maynz.com 123friends.de www.123friends.de
  DocumentRoot /home/www/web2/html
  SuexecUserGroup web2 web2
  ScriptAlias /cgi-bin/ /home/www/web2/html/cgi-bin/
  <IfModule mod_python.c>
    <Files ~ ".py">
      AddHandler python-program .py
      PythonHandler mod_python.publisher
    </Files>
  </IfModule>
  suPHP_ConfigPath /etc/apache2/confixx_phpini/web2/1
</VirtualHost>[/code:1:cb66458aaf]


ich danke im vorraus wenn noch was fehlen sollte bitte bescheid geben axo ich bin noch bissle ein Anfänger noob *g* wenn mir jemand also helfen könnte dann bitte so am besten step by step

danke
Verfasst am: 30.06.2007 [11:31]
joe
Dabei seit: 07.04.2002
Beiträge: 1225
Hi Accessdenied,

erst mal willkommen im Forum und viel Spaß hier!


Wie meinst Du das mit "CGI funktioniert nicht" genau? Was tut nicht bzw. wie äußert sich das? Ein paar zusätzliche Details können da ungemein hilfreich sein icon_smile.gif.

Hier erst mal das grundlegende Zeug, das auch ohne weitere Details prüfbar ist:[list][*:b303de0340] Hast Du Deine CGI-Scripts im /home/www/web2/html/cgi-bin abgelegt, sind sie ausführbar (chmod 755 [rwxr-xr-x] bzw. chmod 555 [r-xr-xr-x]) und gehören sie dem richtigen User?</li>[*:b303de0340] Stimmt das Shebang in den Scripts (erste Zeile etwas in der Art wie: #!/usr/bin/perl)?</li>[*:b303de0340] Was wird im Browser abgezeigt, wenn Du ein Script ausführen willst (sowas wie "Internal Server Error")?</li>[*:b303de0340] Was steht im Error-Log vom Apache?</li>[/list:u:b303de0340]Denk auch immer dran, daß bei einer Linux-Maschine die Dateinamen Case-Sensitive sind. "Beispiel.pl" ist also ungleich "beispiel.pl".

-joe-

while(!asleep()) sheep++;
Verfasst am: 30.06.2007 [15:26]
Accessdenied
Themenersteller
Dabei seit: 29.06.2007
Beiträge: 4
joe schrieb:
Hi Accessdenied,

erst mal willkommen im Forum und viel Spaß hier!


Wie meinst Du das mit "CGI funktioniert nicht" genau? Was tut nicht bzw. wie äußert sich das? Ein paar zusätzliche Details können da ungemein hilfreich sein icon_smile.gif.

Hier erst mal das grundlegende Zeug, das auch ohne weitere Details prüfbar ist:[list][*:efd4498456] Hast Du Deine CGI-Scripts im /home/www/web2/html/cgi-bin abgelegt, sind sie ausführbar (chmod 755 [rwxr-xr-x] bzw. chmod 555 [r-xr-xr-x]) und gehören sie dem richtigen User?</li>[*:efd4498456] Stimmt das Shebang in den Scripts (erste Zeile etwas in der Art wie: #!/usr/bin/perl)?</li>[*:efd4498456] Was wird im Browser abgezeigt, wenn Du ein Script ausführen willst (sowas wie "Internal Server Error")?</li>[*:efd4498456] Was steht im Error-Log vom Apache?</li>[/list:u:efd4498456]Denk auch immer dran, daß bei einer Linux-Maschine die Dateinamen Case-Sensitive sind. "Beispiel.pl" ist also ungleich "beispiel.pl".

-joe-


ja die CGI-Scripts sind im /home/www/web2/html/cgi-bin abgelegt

also die scripte .pl . cgi sind auf 755 attribute und der ordner auch wenn ich jetzt auf <a href="outbound.php?url=http://www.123friends.de/cgi-bin/env.cgi" rel="nofollow" target="_blank">http://www.123friends.de/cgi-bin/env.cgi</a> gehe kommt die fehler meldung 500

zb im env.cgi script steh an der ersten zeile #!/usr/bin/perl

error log wo ist die genau ? eine beispiel.pl war nicht im ordner deswegen die env.cgi

habe error log gefunden mit in pfad var/log/apache2/error.log
folgendem
[code:1:efd4498456][Thu Jun 28 17:19:56 2007] [error] [client 87.177.208.240] suexec policy violation: see suexec log for more details
[Thu Jun 28 17:19:56 2007] [error] [client 87.177.208.240] Premature end of script headers: env.cgi[/code:1:efd4498456]

und in der var/log/apache2/suexec.log
steht
[code:1:efd4498456][2007-06-28 17:19:55]: command not in docroot (/home/www/web2/html/cgi-bin/env.cgi)
[2007-06-28 17:19:55]: uid: (649/web2) gid: (649/649) cmd: env.cgi[/code:1:efd4498456]

wenn ich auf commadline bei ssh gehe führe ich aus : Is - ali
[code:1:efd4498456]/home/www/web2/html/cgi-bin ls -ali
total 12
107036922 drwxr-xr-x  2 web2 web2     1024 Jun 28 18:13 .
102269060 drwxr-xr-x 22 web2 www-data 1024 Jun 28 17:52 ..
519061510 -rwxr-xr-x  1 root root     2624 Aug  4  2006 commander.pl
519061508 -rwxr-xr-x  1 web2 web2     4202 Jun 27 18:06 env.cgi
519061506 -rwxr-xr-x  1 web2 web2      734 Jun 27 18:11 perl.pl
519061514 -rwxr-xr-x  1 root root       45 Jun 28 18:13 test.pl[/code:1:efd4498456]

wenn ich auf commadline bei ssh gehe führe ich aus : find / -name perl
[code:1:efd4498456]/etc/perl
/usr/bin/perl
/usr/lib/perl
/usr/local/lib/perl
/usr/local/share/perl
/usr/share/doc/perl
/usr/share/perl[/code:1:efd4498456]

so was soll ich bitte machen

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 06.07.2007 um 13:13.]
Verfasst am: 30.06.2007 [17:40]
joe
Dabei seit: 07.04.2002
Beiträge: 1225
<!--quoteo--><div class='quotetop'>ZITAT</div><div class='quotemain'><!--quotec-->[Thu Jun 28 17:19:56 2007] [error] [client 87.177.208.240] Premature end of script headers: env.cgi<!--QuoteEnd--></div><!--QuoteEEnd-->
Da fehlt mit 99%iger Wahrscheinlichkeit am Anfang des Scripts folgende Zeile:

[code:1:6efb9aa30b]print "Content-Type: text/plainnn";[/code:1:6efb9aa30b]
Die Ausgabe des Content-Type muß bei CGI vor der Ausgabe aller anderen Header und Inhalte stattfinden. Ist die erste Ausgabe kein Content-Type-Header, dann kriegst Du genau diese Fehlermeldung. Das ist also bei CGI-Scripts üblicherweise die erste Programmzeile nach Shebang und einleitendem Kommentar.

Falls die Ausgabe kein reiner ASCII-Text ist, dann mußt Du den Content-Type natürlich entsprechend anpassen.

-joe-

while(!asleep()) sheep++;
Verfasst am: 30.06.2007 [20:56]
Accessdenied
Themenersteller
Dabei seit: 29.06.2007
Beiträge: 4
joe schrieb:
<!--quoteo--><div class='quotetop'>ZITAT</div><div class='quotemain'><!--quotec-->[Thu Jun 28 17:19:56 2007] [error] [client 87.177.208.240] Premature end of script headers: env.cgi

Da fehlt mit 99%iger Wahrscheinlichkeit am Anfang des Scripts folgende Zeile:

[code:1:c1078c0917]print "Content-Type: text/plainnn";[/code:1:c1078c0917]
Die Ausgabe des Content-Type muß bei CGI vor der Ausgabe aller anderen Header und Inhalte stattfinden. Ist die erste Ausgabe kein Content-Type-Header, dann kriegst Du genau diese Fehlermeldung. Das ist also bei CGI-Scripts üblicherweise die erste Programmzeile nach Shebang und einleitendem Kommentar.

Falls die Ausgabe kein reiner ASCII-Text ist, dann mußt Du den Content-Type natürlich entsprechend anpassen.

-joe-
<!--QuoteEnd--></div><!--QuoteEEnd-->

also in dem script ist es drin
[code:1:c1078c0917]#!/usr/bin/perl


###########################################################################
#
#   (c) Markus Wolf, 1998-2002
#
###########################################################################
#
# env.cgi
# COPYRIGHT NOTICE                                                          
# Copyright 2002 Markus Wolf    
# All Rights Reserved.                    
# EMail: support( @ )perlunity[dot]de
# URL  : http://www.perlunity.de
#                                                                            
# env.cgi darf von jedermann kostenlos benutzt und geändert werden, solange
# dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. Mit
# dem Einsatz dieses Skripts akzeptieren Sie, daß Markus Wolf von jeglicher
# Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt.
# (Mit anderen Worten: Bitte fragen Sie mich, bevor Sie versuchen, mit meinem
# Skript Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher meine Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
#
###########################################################################
#
# Einfach ins CGI-Verzeichnis kopieren und direkt per Link ausführen:
# http://www.meinserver.de/cgi-bin/env.cgi
# und auf dem Bildschirm wird Liste mit den Umgebungsvariablen und
# deren Inhalt ausgegeben.
#
###########################################################################


###
#Module

use File::Find;


###
#Puffer ausschalten

|=1;


###
#Ausgabe an den Browser schicken

print "Content-type: text/htmlnn";

print qq~
<html>
<head>
<title>ENV-Viewer</title>
<style type="text/css">
<!--
   BODY { font-family:Verdana,Arial; font-size:11px;}
   TD { font-family:Verdana,Arial; font-size:11px; }
   A:hover {color: #990000}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000">
~;


###
#ENV-Liste mit den Bezeichnungen und Inhalten ausdrucken

my version=`perl -v`;

print qq~
<table border=1 cellspacing=0 cellpadding=2  width=100%>
<tr bgcolor=#b6d5e3><td colspan=3><b>Liste der Umgebungsvariablen</b></td></tr>
<tr><td>Perl-Var 0</td><td>  =>  </td><td>0</td></tr>
<tr><td>Perl-Var </td><td>  =>  </td><td></td></tr>
<tr><td>Perl-Var ^O</td><td>  =>  </td><td>^O</td></tr>
<tr><td valign=top>Perl-Var ^V</td><td valign=top>  =>  </td><td>version</td></tr>
<tr><td colspan=3> </td></tr>
~;

foreach my e_v_n (sort keys %ENV) {

    print "<tr><td>e_v_n</td><td>  =>  </td><td>ENV{e_v_n} </td></tr>";
}

print qq(<tr><td colspan=3> </td></tr>icon_wink.gif;

foreach my path (@INC) {
    
    inc .= "path <BR>n";
}

print qq~
<tr><td valign=top><b>INC-Pfade</b></td><td valign=top>  =>  </td><td>
inc</td></tr></table><br><table border=1 cellspacing=0 cellpadding=2 width=100%>
<tr bgcolor=#b6d5e3><td colspan=3><b>Installierte Perl-Module</b></td></tr>
~;


###
#Module laden

foreach my path (@INC) {

    next if (path =~ /^./);
    find(&perlmodules,path);
}

@mods=sort {lc(a) cmp lc(b)} keys %MODS;
my amount=int(#mods/3+.9999);

for (my mod=0; mod<amount; mod++)  {
    
    print qq(<tr><td width=33%>mods[mod]</td><td width=33%>mods[mod+1*amount]</td><td width=33%>mods[mod+2*amount]</td></tr>n);
}

print "</table></body></html>";



###########################################################################
# Module laden
###########################################################################

sub perlmodules {    
    

if (File::Find::name =~ /.pm/){        
        
    open(MODFILE,File::Find::name) || return;        
    while(<MODFILE>icon_wink.gif{            
            
        if (/^ *package +(S+);/) {                
            MODS{1}=1;    
            last;
        }
    }
    close(MODFILE);
}
    
    
}



###########################################################################
# ENDE
###########################################################################[/code:1:c1078c0917]


ich bekomme trotzdem noch immer denn 500er

also was soll ich am besten machen ?
Verfasst am: 01.07.2007 [10:25]
joe
Dabei seit: 07.04.2002
Beiträge: 1225
<!--quoteo--><div class='quotetop'>ZITAT</div><div class='quotemain'><!--quotec-->[...]
###
#Module
<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->use File::Find;<!--colorc--></span><!--/colorc-->
[...]
#Ausgabe an den Browser schicken
print "Content-type: text/htmlnn";
[...]<!--QuoteEnd--></div><!--QuoteEEnd-->
Hast Du das Script mal an der Shell ausgeführt? Vor der Ausgabe des Content-Type wird ein Perl-Modul geladen (use File::Findicon_wink.gif. Wenn das Laden dieses Moduls aus irgendwelchen Gründen nicht möglich ist, dann hagelt's auch Fehler.

Zudem will das Script auf diverse Verzeichnisse außerhalb des Homeverzeichnis von User web2 zugreifen (alle Include-Pfade von Perl). Das könnte per Default verboten sein (siehe auch suexec.log).

Mal anders rum... Hier ist mal ein kleines CGI-Script, das auf jeden Fall läuft, wenn CGI ganz grundsätzlich funktioniert. Probiert's mal damit:
[code:1:8682c06bad]#!/usr/bin/perl
#
# -> chmod 755 oder chmod 555 nicht vergessen
# -> Owner und Group nach dem Upload kontrollieren
#

print "Content-Type: text/plainnn";
print "Hello World!";[/code:1:8682c06bad]

Wenn dieses Script auf Deiner Kiste funktioniert (tut es jedenfalls auf meinen), dann will das env.cgi irgendwas tun, das es laut Konfiguration nicht darf. Die entsprechende Info solltest Du dann entweder im suexec.log oder im Apache Error Log des betreffenden vHost finden. Wo sich diese Logs bei einer Confixx-Kiste genau verstecken, mußt Du evtl. in der Confixx-Doku nachlesen. Rein logisch betrachtet sollten die Apache-Logs irgendwo im Home-Vezeichnis von web2 liegen und das suexec.log irgendwo in /var/log. Aber mit Logik kann man bei solchen Admin-Frontends auch leicht falsch liegen...

-joe-

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 01.07.2007 um 10:27.]

while(!asleep()) sheep++;
Verfasst am: 02.07.2007 [08:09]
Accessdenied
Themenersteller
Dabei seit: 29.06.2007
Beiträge: 4
joe schrieb:
<!--quoteo--><div class='quotetop'>ZITAT</div><div class='quotemain'><!--quotec-->[...]
###
#Module
<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->use File::Find;<!--colorc--></span><!--/colorc-->
[...]
#Ausgabe an den Browser schicken
print "Content-type: text/htmlnn";
[...]

Hast Du das Script mal an der Shell ausgeführt? Vor der Ausgabe des Content-Type wird ein Perl-Modul geladen (use File::Findicon_wink.gif. Wenn das Laden dieses Moduls aus irgendwelchen Gründen nicht möglich ist, dann hagelt's auch Fehler.

Zudem will das Script auf diverse Verzeichnisse außerhalb des Homeverzeichnis von User web2 zugreifen (alle Include-Pfade von Perl). Das könnte per Default verboten sein (siehe auch suexec.log).

Mal anders rum... Hier ist mal ein kleines CGI-Script, das auf jeden Fall läuft, wenn CGI ganz grundsätzlich funktioniert. Probiert's mal damit:
[code:1:be6ebfb683]#!/usr/bin/perl
#
# -> chmod 755 oder chmod 555 nicht vergessen
# -> Owner und Group nach dem Upload kontrollieren
#

print "Content-Type: text/plainnn";
print "Hello World!";[/code:1:be6ebfb683]

Wenn dieses Script auf Deiner Kiste funktioniert (tut es jedenfalls auf meinen), dann will das env.cgi irgendwas tun, das es laut Konfiguration nicht darf. Die entsprechende Info solltest Du dann entweder im suexec.log oder im Apache Error Log des betreffenden vHost finden. Wo sich diese Logs bei einer Confixx-Kiste genau verstecken, mußt Du evtl. in der Confixx-Doku nachlesen. Rein logisch betrachtet sollten die Apache-Logs irgendwo im Home-Vezeichnis von web2 liegen und das suexec.log irgendwo in /var/log. Aber mit Logik kann man bei solchen Admin-Frontends auch leicht falsch liegen...

-joe-
<!--QuoteEnd--></div><!--QuoteEEnd-->



ich bedanke mich ganz herzlich für deine unterstützende hilfe das problem war [b]suexec war falsch compiled [/b:be6ebfb683]

danke