CGI :(
Re: CGI :(
Hallo Wolfgang,
dann wird das wohl nicht so einfach ... denn unter k habe ich alle domains die mit k anfangen und unter h alle die mit h anfangen usw...
muß ich jetzt für alle so ein link erstellen
ln -sf /home/k/www /srv/www/htdocs
ln -sf /home/m/www /srv/www/htdocs
usw oder gibts da noch was anderes ?
dann wird das wohl nicht so einfach ... denn unter k habe ich alle domains die mit k anfangen und unter h alle die mit h anfangen usw...
muß ich jetzt für alle so ein link erstellen
ln -sf /home/k/www /srv/www/htdocs
ln -sf /home/m/www /srv/www/htdocs
usw oder gibts da noch was anderes ?
Re: CGI :(
Hallo,
uff, das wird komplizierter. :roll:
Wie viele Domains hast Du denn, daß Du für jeden Anfangsbuchstaben einen eigenen Ordner nehmen willst?
Auf wie viele User (Menschen) sind diese Domains verteilt?
Dein DocRoot aus der Fehlermeldung:
/home/k/xxxxxxxx/public_html/cgi-bin/env.cgi
Das /k ist geklärt, was ist /xxxxxxxx - ist das etwa die Domain? Dann müßtest Du für jede Domain einen Linuxuser anlegen.
Les das mal komplett durch, insbesondere um das Konzept von suexec zu verstehen:
http://httpd.apache.org/docs-2.0/de/suexec.html
Gruß, Wolfgang
uff, das wird komplizierter. :roll:
Wie viele Domains hast Du denn, daß Du für jeden Anfangsbuchstaben einen eigenen Ordner nehmen willst?
Auf wie viele User (Menschen) sind diese Domains verteilt?
Dein DocRoot aus der Fehlermeldung:
/home/k/xxxxxxxx/public_html/cgi-bin/env.cgi
Das /k ist geklärt, was ist /xxxxxxxx - ist das etwa die Domain? Dann müßtest Du für jede Domain einen Linuxuser anlegen.
Les das mal komplett durch, insbesondere um das Konzept von suexec zu verstehen:
http://httpd.apache.org/docs-2.0/de/suexec.html
Gruß, Wolfgang
Re: CGI :(
Dann muss der Link
ln -sf /home /srv/www/htdocs
heißen, auch wenn ich diese "Lösung" bescheuert finde.
ln -sf /home /srv/www/htdocs
heißen, auch wenn ich diese "Lösung" bescheuert finde.
Re: CGI :(
hi,
ich habe da auch nen problem!
und zwar habe ich einen newsscrpit laufen der auch wunderbar funktioniert.
news.cgi
wenn ich jetzt aber nen testscript test.cgi oder auch check.pl laufen lassen
will kommt immer internal server error
test.cgi
check.pl
das ist doch nen anderes problem als hier im thread beschrieben,oder ??
weil sonst dürfte der newsscript ja auch nicht funktionieren.
hat jemand ne idee ?
gruss
jens
â?¬dit: es läuft auch sonst kein script NUR der newsscript
ich habe da auch nen problem!
und zwar habe ich einen newsscrpit laufen der auch wunderbar funktioniert.
news.cgi
Code: Select all
#!/usr/bin/perl
use CGI ':standard';
use CGI::Carp 'fatalsToBrowser';
use CGI::Cookie;
require "news_cfg.pl";
my @allow = ('','News Code erlaubt<br>keine Bilder','News Code erlaubt','HTML erlaubt');
sub news_code {
my $datum = &get_date($_[7]); # Datum
my $code = $_[0];
$x = $_[8];
$x =~ s/<br>//ig;
$code =~ s/#MAIL#/$_[4]/eig;
$code =~ s/#MAIL([0-9]+)#/substr($_[4],0,$1)/eig;
$code =~ s/#NAME#/$_[3]/eig;
$code =~ s/#NAME([0-9]+)#/substr($_[3],0,$1)/eig;
$code =~ s/#DATUM#/$datum/eig;
$code =~ s/#TEXT#/$_[8]/eig;
$code =~ s/#TEXT([0-9]+)(N?)#/substr($2?$x:$_[8],0,$1)/eig;
$code =~ s/#SYMB#/"<img src="$symb_url/".$_[6]."">"/eig if($_[6]);
$code =~ s/#SYMB#//ig;
$code =~ s/#ID#/$_[1]/eig;
$code =~ s/#BETREFF#/$_[5]/eig;
$code =~ s/#BETREFF([0-9]+)#/substr($_[5],0,$1)/eig;
for (my $fx=1;$fx<6;$fx++) {
$code =~ s/#F$fx#/$_[8+$fx]/eig;
if ($_[8+$fx]) {
$code =~ s/#IFF$fx#//eig;
$code =~ s/#/IFF$fx#//eig;
} else {
$code =~ s/#IFF$fx#.*?#/IFF$fx#//eigs;
};
};
return $code;
};
sub eingabe_form {
my $code = $form_template;
$code =~ s/#NAME#/textfield(-name=>'u', -size=>10)/eig;
$code =~ s/#PASS#/password_field(-name=>'p', -size=>10)/eig;
$code =~ s/#MAIL#/ textfield(-name=>'m', -size=>60)/eig;
$code =~ s/#BETREFF#/textfield(-name=>'s', -size=>60)/eig;
$code =~ s/#F1#/textfield(-name=>'f1', -size=>60)/eig;
$code =~ s/#F2#/textfield(-name=>'f2', -size=>60)/eig;
$code =~ s/#F3#/textfield(-name=>'f3', -size=>60)/eig;
$code =~ s/#F4#/textfield(-name=>'f4', -size=>60)/eig;
$code =~ s/#F5#/textfield(-name=>'f5', -size=>60)/eig;
if ($symb_akt) {
my $symb="";
opendir(D, $symb_path) or die $!;
my @symb = grep { (-f $symb_path."/".$_) && ($_ =~ /.(jpg|gif|png|jpeg)$/) && ($_ ne "ok.gif") } readdir(D);
closedir(D);
param('y', $symb[0]) if ((!param('y')) && ($symb[0]));
foreach(@symb) {
$symb .= "<input type="radio" name="y" value="$_"";
$symb .=" checked" if ($_ eq param('y'));
$symb .= "><img src="$symb_url/$_"> ";
};
$code =~ s/#SYMB#/$symb/eig;
};
$code =~ s/#TEXT#/textarea(-name=>'t', -cols=>60, -rows=>15, -wrap=>'virtual')/eig;
$code =~ s/#TEXTSTAT#/($_[0]==1)?"HTML erlaubt":$allow[$secur_mode]/eig;
my $newscodehlp="";
if (($secur_mode>0) && ($secur_mode<3)) {
$newscodehlp = "<font size=-2><br><b>NewsCode:</b> [b]<b>Fett</b>[/b] , [i]<i>Kursiv</i>[/i] , [u]<u>Unterstrichen</u>[/u]";
$newscodehlp .= " , [br] neue Zeile , [p]Absatz[/p] , [z]Zentriert[/z]";
$newscodehlp .= "<br>URL: [url]http://www.name.de[/url] oder [url=http//www.name.de]Linktext[/url] , ";
$newscodehlp .= "E-Mail: [email]mail@name.de[/email] oder [email=mail@name.de]E-Mail[/email]<br>";
$newscodehlp .= "Bilder: [img=http://www.name.de/bild.gif]" if ($secur_mode==2);
$newscodehlp .= "</font>";
};
$code =~ s/#TEXTHELP#/$newscodehlp/eig;
$code =~ s/#SENDEN#/submit(-value=>'Eintragen')/eig;
$code .= hidden(-name=>'a');
return $code;
};
sub get_date {
my ($sec,$min,$h,$tag,$mon,$jahr,$wday, $yday,$isdst) = localtime($_[0]+$time_offset*60*60);
$mon++; $jahr+=1900; $h = sprintf("%02d", $h); $min = sprintf("%02d", $min);$sec = sprintf("%02d", $sec);
my $mon2 = sprintf("%02d", $mon);
my $tag2 = sprintf("%02d", $tag);
my @tag_k=('So','Mo','Di','Mi','Do','Fr','Sa');
my @tag_l=('Sonntag','Montag', 'Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
my @mon_k=('.','Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Nov','Dez');
my @mon_l=('.','Januar','Februar','März','April','Mai','Juni','Juli','August', 'September','Oktober','November','Dezember');
my $dat = $datformat;
$dat =~ s/#t2/$tag2/eig;
$dat =~ s/#t/$tag/eig;
$dat =~ s/#wk/$tag_k[$wday]/eig;
$dat =~ s/#wl/$tag_l[$wday]/eig;
$dat =~ s/#mn/$mon/eig;
$dat =~ s/#m2/$mon2/eig;
$dat =~ s/#mk/$mon_k[$mon]/eig;
$dat =~ s/#ml/$mon_l[$mon]/eig;
$dat =~ s/#jk/($jahr % 100)/eig;
$dat =~ s/#jl/$jahr/eig;
$dat =~ s/#s/$h/eig;
$dat =~ s/#n/$min/eig;
$dat =~ s/#k/$sec/eig;
return $dat;
};
$max_news = 10 if ($max_news == 0);
#Kekse
my @cookies=();
if ((param('u') ne "") && (param('save_user')==1)) {
push(@cookies, new CGI::Cookie(-name=>'NewsUser', -value=>param('u'), -expires=>"+12M"));
};
if ((param('p') ne "") && (param('save_pass')==1)) {
push(@cookies, new CGI::Cookie(-name=>'NewsPass', -value=>param('p'), -expires=>"+12M"));
};
if (param('del_cookies') == 1) {
@cookies=();
push(@cookies, new CGI::Cookie(-name=>'NewsUser', -value=>"", -expires=>"-12M"));
push(@cookies, new CGI::Cookie(-name=>'NewsPass', -value=>"", -expires=>"-12M"));
};
my %keks=fetch CGI::Cookie;
param('u', $keks{'NewsUser'}->value) if (($keks{'NewsUser'}) && (param('u') eq ""));
param('p', $keks{'NewsPass'}->value) if (($keks{'NewsPass'}) && (param('p') eq ""));
print header(-expires=>'now', -cookie=>@cookies), start_html(-title=>$site_title.' News', -background=>$background, -text=>$textcolor, -style=>{'src'=>$style}, -link=>$linkcolor, -bgcolor=>$bgcolor);
&print_file($inc_top);
print h1($site_title.' News');
my @user=();
my @news=();
open(F, "<$data_path/news_user.dat") or die $!;
while (<F>) { chomp; push(@user, $_); };
close(F);
if ((!(param('u')) || !(param('p')) || !(param('a'))) && (param('a') ne 'e')) {
my %labels = ('p'=>'Passwort ändern','e'=>'News eintragen', 'f'=>'News freischalten','u'=>'Benutzer bearbeiten');
print start_form, "<table><tr><td>Login:</td><td>", textfield(-name=>'u', -size=>10),"</td></tr><tr><td>",
"Passwort:</td><td>", password_field(-name=>'p', -size=>10), "</td></tr><tr><td>Aktion:</td><td>",
popup_menu(-name=>'a', -values=>['p','e', 'f','u'], -labels=>%labels, -default=>'e'), "</td></tr><tr><td>Cookies:</td><td>", checkbox(-name=>'save_user', -value=>1, -label=>"Benutzer speichern"), checkbox(-name=>'save_pass', -value=>1, -label=>"Passwort speichern"), checkbox(-name=>'del_cookies', -value=>1, -label=>"Cookies löschen"), "</td></tr><tr><td colspan=2>", submit(-value=>'Start'),"</td></tr></table>", end_form;
&ende();
exit;
};
my $ok=0;
my $isAdmin = 0;
my $can_html = ($secur_mode>=3);
foreach(@user) {
my @cu = split(/~/, $_);
if (($cu[0] eq param('u')) && ($cu[1] eq crypt(param('p'), 'xx')) && (index($cu[3], param('a'))>=0)) {
$ok = 1;
$can_html = 1 if ($secur_user==1);
$isAdmin = (index($cu[3], "a")>=0);
param('m', $cu[2]);
};
};
if ((!$ok) && ($admin_post)) { print "Fehler: Zugriff verweigert !"; &ende(); };
if (param('a') eq 'e') {
if (!param('m') || !param('t') || !param('s') || (!$ok && !param('m'))) {
print start_form, &eingabe_form(0), end_form;
&ende;
} else {
# UnHTML
foreach (param()) {
my $x = param($_);
$x =~ s/<.*?>//g if (!$can_html);
if ($secur_mode>0) {
$x =~ s/[(/)?z]/<$1center>/ig;
$x =~ s/[(/)?(b|i|u|p|br)]/<$1$2>/ig;
$x =~ s/[url=(.*?)](.*?)[/url]/<A href="$1">$2</a>/ig;
$x =~ s/[url](.*?)[/url]/<A href="$1">$1</a>/ig;
$x =~ s/[email=(.*?)](.*?)[/email]/<A href="mailto:$1">$2</a>/ig;
$x =~ s/[email](.*?)[/email]/<A href="mailto:$1">$1</a>/ig;
};
if ($secur_mode>1) {
$x =~ s/[img=(.*?)]/<img src="$1">/ig;
};
param($_, $x);
};
open(F, ">>$data_path/news_news.dat") or die $!;
flock(F, 2);
my $text = param('t');
$text =~ s/n/<br>/g;
$text =~ tr/r/ /;
$text =~ s/<!--.*?-->//g;
my $datum = time;
print F substr(rand(100000),0,8)."~$ok~".param('u')."~" .param('m')."~".param('s')."~".param('y')."~".$datum."~".$text."~".param('f1')."~".param('f2')."~" .param('f3')."~".param('f4')."~".param('f5')."n";
close(F);
print h2("News wurden gespeichert !");
if ($ok) {
&update();
} else {
print "Der Eintrag wird erst nach Freigabe durch $site_title ercheinen.";
};
if ((($mailmode == 1) && !$ok) || ($mailmode == 2)) {
open(MAIL, "|$sendmail -t") or die $!;
print MAIL "From: ".param('m')."nTo: $from_mailn",
"Subject: News: ".param('s').' ('.param('u').")nn",
"$site_title NewsnnEintrag von: ".param('u')." (".param('m'),")n";
if ($ok) {
print MAIL "Datum: ", &get_date($datum), "n";
} else {
print MAIL "Datum: (wird nach Freigabe eingetragen)n";
};
print MAIL "Betreff: ", param('s'), "nText:n", param('t'), "nStatus: $ok (0-vorgeschlagen, 1-eingetragen)nn",$cgi_url, "/news.cgin";
if ((!close(MAIL)) && (!$sendmail_ignore_err)) { print "<font size="-2">Warnung: sendmail - Fehler</font>"; };
};
&ende;
};
};
unless ($ok) { print "Fehler: Zugriff verweigert"; &ende(); };
if (param('a') eq 'p') {
if (!param('p1') || !param('p2') || (param('p1') ne param('p2')) || !param('m')) {
print h2('Passwort/E-Mail für '.param('u').' ändern'), start_form,
hidden(-name=>'a'), hidden(-name=>'u'), hidden(-name=>'p'),
"<table><tr><td>neues Passwort:</td><td>", password_field(-name=>'p1', -size=>10), "</td></tR>",
"<tr><td>wiederholen:</td><td>", password_field(-name=>'p2', -size=>10), "</td></tR>",
"<tr><td>E-Mail:</td><td>", textfield(-name=>'m', -size=>40), "</td></tr></table>",
submit(-value=>'Ã?ndern'), end_form;
} else {
foreach(@user) {
my @cu = split(/~/, $_);
if ($cu[0] eq param('u')) {
$cu[1] = crypt(param('p1'),'xx');
$cu[2] = param('m');
$_ = join("~", @cu);
print h2('Passwort/E-Mail geändert.');
&save_user;
};
};
};
&ende;
};
if (param('a') eq 'u') {
if (param('set')) {
foreach(@user) {
my @cu = split(/~/, $_);
$cu[1] = crypt(param($cu[0]."_pwd"), "xx") if (param($cu[0]."_pwd"));
$cu[2] = param($cu[0]."_mail");
my $wa = (index($cu[3], "a")>=0);
$cu[3] = "p";
$cu[3] .= "u" if (param($cu[0]."_u"));
$cu[3] .= "f" if (param($cu[0]."_f"));
$cu[3] .= "e" if (param($cu[0]."_e"));
if ($isAdmin) {
$cu[3] .= "a" if (param($cu[0]."_a"));
} else {
$cu[3] .= "a" if ($wa);
};
$_ = join("~", @cu);
$_ = "" if ((param($cu[0]."_del")) && ($isAdmin || !$wa));
};
if (param('new_nick')) {
push(@user, param('new_nick')."~".crypt(param('new_pwd'),'xx')."~".param('new_mail')."~e");
CGI::delete('new_nick');CGI::delete('new_pwd');CGI::delete('new_mail');
};
&save_user;
};
print h2('Benutzer bearbeiten'), start_form, "<table border><tr><th>Nick</th><th>Passwort</th> <th>Mail</th><th>Eintragen</th><th>Freigeben</th><th>Benutzer<br>bearbeiten</th> <th>Admin</th><th><font color=red>Löschen</font></th></tr>";
foreach(@user) {
next if (!$_);
my @cu = split(/~/, $_);
param($cu[0]."_u", (index($cu[3], "u")>=0));
param($cu[0]."_f", (index($cu[3], "f")>=0));
param($cu[0]."_e", (index($cu[3], "e")>=0));
param($cu[0]."_a", (index($cu[3], "a")>=0));
param($cu[0]."_mail", $cu[2]);
print "<tr><td>$cu[0]</td><td>", textfield(-name=>$cu[0]."_pwd", -size=>10), "</td><td>",
textfield(-name=>$cu[0]."_mail", -size=>30), "</td><td>", checkbox(-name=>$cu[0]."_e", -value=>'1', -label=>''), "</td><td>",
checkbox(-name=>$cu[0]."_f", -value=>'1', -label=>''), "</td><td>", checkbox(-name=>$cu[0]."_u", -value=>'1', -label=>''),"</td><td>",checkbox(-name=>$cu[0]."_a", -value=>'1', -label=>''),"</td><td>",
checkbox(-name=>$cu[0]."_del", -value=>'1', -label=>''), "</td></tR>";
};
print "<tr><td>", textfield(-name=>'new_nick', -size=>10), "</td><td>", textfield(-name=>"new_pwd", -size=>10), "</td><td>",
textfield(-name=>"new_mail", -size=>30), "</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tR>";
print "</table><p><b>Passwort</b> leer lassen, um altes beizubehalten<p>", hidden(-name=>'u'), hidden(-name=>'p'),
hidden(-name=>'a'), submit(-name=>'set', -value=>"Ã?bernehmen"), end_form;
&ende;
};
if (param('a') eq 'f') {
print h2('Freigabe');
&load_news;
if (param('set')) {
foreach(@news) {
my @cn = split(/~/, $_);
$cn[1] = 1 if param($cn[0]."_frei");
$cn[6] = time if param($cn[0]."_frei");
$_ = join("~", @cn);
$_ = "" if param($cn[0]."_del");
};
&save_news;
&update;
};
if (param('postedit')) {
foreach(@news) {
my @cn = split(/~/, $_);
if ($cn[0] eq param('id')) {
my $text = param('t');
$text =~ s/n/<br>/g;
$text =~ tr/r/ /;
$text =~ s/<!--.*?-->//g;
my $datum=$cn[6];
$datum = time if (param('d'));
param('y','1') if (!param('y'));
for(my $fx=1;$fx<6;$fx++) { if (!param('f'.$fx)) { param('f'.$fx,0 ); }};
$_ = join("~", $cn[0], $cn[1], param('on'), param('om'), param('s'), param('y'), $datum, $text, param('f1'), param('f2'), param('f3'), param('f4'), param('f5'));
};
};
&save_news;
&update;
};
if (param('edit')) {
foreach(@news) {
my @cn = split(/~/, $_);
if ($cn[0] eq param('edit')) {
$cn[7] =~ s/<br>/n/g;
param('on', $cn[2]);param('om', $cn[3]);param('s', $cn[4]);param('y', $cn[5]);param('d', $cn[6]);param('t', $cn[7]);
for (my $fx=1;$fx<6;$fx++) { param('f'.$fx, $cn[7+$fx]); };
param('id', param('edit'));
print h2('Beitrag bearbeiten'), start_form, "<table border>",
"<tr><th>Name:</th><td>", textfield(-name=>'on', -size=>10), "</td></tr>",
"<tr><th>E-Mail:</th><td>", textfield(-name=>'om', -size=>60), "</td></tr>",
"<tr><th>Datum:</th><td>", checkbox(-name=>'d', -value=>'1', -label=>'auf aktuelles Datum setzen'), "</td></tr>",
"<tr><th>Titel:</th><td>", textfield(-name=>'s', -size=>60), "</td></tr>";
if ($symb_akt) {
print "<tr><th>Symbol:</th><td>";
opendir(D, $symb_path) or die $!;
my @symb = grep { (-f $symb_path."/".$_) && ($_ =~ /.(jpg|gif|png|jpeg)$/) && ($_ ne "ok.gif") } readdir(D);
closedir(D);
param('y', $symb[0]) if ((!param('y')) && ($symb[0]));
foreach(@symb) {
print "<input type="radio" name="y" value="$_"";
print(" checked") if ($_ eq param('y'));
print "><img src="$symb_url/$_">";
};
print "</td></tr>"; };
for (my $fx=1; $fx<6; $fx++) {
print "<tr><th>F$fx:</th><td>", textfield(-name=>'f'.$fx, -size=>60), "</td></tr>";
};
print "<tr><th>Text:<br><font size=-2>HTML erlaubt</font></th><td>", textarea(-name=>'t', -cols=>60, -rows=>15, -wrap=>'virtual'), "</td></tr>",
"<tr><th> </th><td>", submit(-name=>'postedit', -value=>'Ã?ndern'), "</td></tr>",
"</table>", hidden(-name=>'a'), hidden(-name=>'u'), hidden(-name=>'p'), hidden(-name=>'id'), end_form;
&ende;
}; # if
}; # foreach
} else {
print start_form, "<table border><tr><th>Beitrag</th><th>Aktionen</th></tr>";
foreach(@news) {
my @cn = split(/~/, $_);
print "<tr><td>", news_code($news_template, @cn), "</td><td>", "ID: $cn[0]<br>";
if (!$cn[1]) {
print checkbox(-name=>$cn[0]."_frei", -value=>'1', -label=>'Freigeben'), "<br>";
};
print checkbox(-name=>$cn[0]."_del", -value=>'1', -label=>'Löschen'), "<br>",
"<input type=radio name="edit" value="$cn[0]"> Bearbeiten<br><font size=-1>Nur eine wählen !</font></td></tr>";
};
print "</table>", hidden(-name=>'a'), hidden(-name=>'u'), hidden(-name=>'p'), submit(-name=>'set', -value=>'Ausführen'),
end_form;
&ende;
};
};
sub ende {
print hr, "<font size=-2>", a({-href=>$cgi_url."/news.cgi"}, "Newsverwaltung"), " - Script Version 1.542 (c) ", a({-href=>"http://www.alexander-fleischer.de"}, alx), " 2000, 2001 - ", a({-href=>"mailto:cgi@alexander-fleischer.de"}, "E-Mail"), "</font>";
&print_file($inc_bottom);
print end_html;
exit;
};
sub save_user {
open(F, ">$data_path/news_user.dat") or die $!;
flock(F, 2);
foreach(@user) { next if (!$_);print F "$_n"; };
close(F);
};
sub save_news {
open(F, ">$data_path/news_news.dat") or die $!;
flock(F, 2);
foreach(@news) { next if (!$_);print F "$_n"; };
close(F);
};
sub load_news {
open(F, "<$data_path/news_news.dat") or die $!;
flock(F, 2);
@news=();
while(<F>) { chomp; push(@news, $_); };
close(F);
};
sub update {
&load_news;
my @sort_news = sort newssort @news;
my $count = 0;
open(F, ">$html_path/news.txt") or die $!;
flock(F, 2);
if ($hdr_use) {
open(G, ">$html_path/news_hdr.txt") or die $!;
flock(G, 2);
};
foreach(@sort_news) {
my @cn = split(/~/, $_);
next if (!$cn[1]);
$count++;
if ($count<=$max_news) {
print F news_code($news_template, @cn);
if ($hdr_use && ($count<=$hdr_cnt)) { print G news_code($hdr_template, @cn); };
} else {
&archive_news($_);
$_="";
};
};
close(F);
if ($hdr_use) { close(G); };
@news = @sort_news;
&save_news;
};
sub archive_news {
my @cn = split(/~/, $_[0]);
my ($x,$x,$x,$x,$mon,$jahr,$x, $x,$x) = localtime($cn[6]);
$mon++; $jahr+=1900; $mon = sprintf("%02d", $mon);
my $mfile = "$html_path/$jahr$mon$index_ext";
my @html=();
if (!-r $mfile) {
my %monat = ('01', 'Januar', '02', 'Februar', '03', 'März', '04', 'April', '05', 'Mai', '06', 'Juni', '07', 'Juli', '08', 'August',
'09', 'September', '10', 'Oktober', '11', 'November', '12', 'Dezember');
open(G, "<$html_path/mtemplate.dat") or die $!;
open(H, ">$mfile") or die $!;
flock(G, 2);flock(H, 2);
while(<G>) { s/<!-- monat -->/"$monat{$mon} $jahr"/eg; print H $_;};
close(G); close(H);
open(G, "+<$html_path/$index_name") or die $!;
while(<G>) {chomp; push(@html, $_); };
seek(G,0,0);
foreach(@html) {
print G "$_n";
if (/<!-- insert -->/) {
print G "<a href="$html_url/$jahr$mon$index_ext">$monat{$mon} $jahr</a><br>n";
};
};
close(G);
close(H);
};
@html=();
open(G, "+<$mfile") or die $!;
flock(G, 2);
while(<G>) {chomp; push(@html, $_); };
seek(G,0,0);
foreach(@html) {
print G "$_n";
if (/^<!-- insert -->/) { $_=""; last; };
$_="";
};
print G news_code($news_template, @cn);
foreach(@html) {
next if (!$_);
print G "$_n";
};
close(G);
};
sub newssort {
my @ca = split(/~/, $a);
my @cb = split(/~/, $b);
$cb[6] <=> $ca[6];
};
sub print_file {
if (($_[0]) && (-r $_[0])) {
open(FILE1, $_[0]) or die $!;
while (<FILE1>) {print;};
close(FILE1);};
};
will kommt immer internal server error
test.cgi
Code: Select all
#!/usr/bin/perl
die("Hallo "Welt");
Code: Select all
#!/usr/bin/perl
print "Content-type: text/htmlnn";
while (($key, $val) = each %ENV) {
print "$key = $val<br>n";
}
weil sonst dürfte der newsscript ja auch nicht funktionieren.
hat jemand ne idee ?
gruss
jens
â?¬dit: es läuft auch sonst kein script NUR der newsscript
Re: CGI :(
Hallo Jens28,
liegen die Scripts alle im gleichen Ordner? Wenn im gleichen Ordner ein Script geht und andere nicht, liegt's am Script oder es wurde falsch eingerichtet.
Schau mal in die Logfiles (/var/log/warn bzw /var/log/syslog) und in die suexec.log bzw suexec_log. Vorher das kaputte Script aufrufen, damit die Meldung im Logfile unten steht.
test.cgi kann nicht funktionieren, es fehlt der Content-type, die fehlende Zeile kannst Du aus der check.pl rauskopieren.
Gruß, Wolfgang
liegen die Scripts alle im gleichen Ordner? Wenn im gleichen Ordner ein Script geht und andere nicht, liegt's am Script oder es wurde falsch eingerichtet.
Schau mal in die Logfiles (/var/log/warn bzw /var/log/syslog) und in die suexec.log bzw suexec_log. Vorher das kaputte Script aufrufen, damit die Meldung im Logfile unten steht.
test.cgi kann nicht funktionieren, es fehlt der Content-type, die fehlende Zeile kannst Du aus der check.pl rauskopieren.
Gruß, Wolfgang
Re: CGI :(
hi wolfgang,
die scripts liegen alle im cgi-bin verzeichnis.
in der suxec.log steht :
in dern warn steht nix was mit dem script zutun hat.
in der error.log habe ich das stehen:
gruss
jens
die scripts liegen alle im cgi-bin verzeichnis.
in der suxec.log steht :
Code: Select all
[2004-03-06 18:57:34]: info: (target/actual) uid: (web4/web4) gid: (ftponly/ftponly) cmd: sendmail.cgi
in der error.log habe ich das stehen:
Code: Select all
[Sat Mar 6 18:57:35 2004] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: /srv/www/htdocs/web4/html/cgi-bin/sendmail.cgi
jens
Re: CGI :(
Hallo Jens,
ich glaub nicht, daß Du ein Problem mit dem Server hast, aber prüf mal folgendes:
in der httpd.conf sollte stehen:
AddHandler cgi-script .cgi .pl
eventuell fehlt das .pl
Auf der Konsole als Root:
suexec -V
interessant ist vor allem DOC_ROOT, sollte sein: /srv/www/htdocs
Und /usr/bin/perl ist sicher auch vorhanden.
Dann nimm mal ein ganz kleines Script:
Lade es per FTP hoch, FTP-Programm dabei auf ASCII stellen, anschließend die Größe vergleichen. Es muß auf dem Server kleiner sein als auf dem Windows-PC.
Setze das Script CHMOD 755 (mit dem FTP-Programm) und rufe es mit dem Browser auf.
Wenn es nicht funktioniert: Logfiles (access_log, error_log, suexec_log).
Gruß, Wolfgang
ich glaub nicht, daß Du ein Problem mit dem Server hast, aber prüf mal folgendes:
in der httpd.conf sollte stehen:
AddHandler cgi-script .cgi .pl
eventuell fehlt das .pl
Auf der Konsole als Root:
suexec -V
interessant ist vor allem DOC_ROOT, sollte sein: /srv/www/htdocs
Und /usr/bin/perl ist sicher auch vorhanden.
Dann nimm mal ein ganz kleines Script:
Code: Select all
#!/usr/bin/perl
print "Content-type: text/htmlnnHallon";
-- eine Leerzeile am Dateiende --
Setze das Script CHMOD 755 (mit dem FTP-Programm) und rufe es mit dem Browser auf.
Wenn es nicht funktioniert: Logfiles (access_log, error_log, suexec_log).
Gruß, Wolfgang
Re: CGI :(
hi wolfgang,
es funktioniert alles , habe mal nen anderes ftp-programm genommen und schon ging alles. :oops:
danke dir
gruss
jens
[/quote]
es funktioniert alles , habe mal nen anderes ftp-programm genommen und schon ging alles. :oops:
danke dir
gruss
jens
[/quote]
Re: CGI :(
Hallo zusammen,
Ich versuche
http://people.ee.ethz.ch/~dws/software/mailgraph/ zum Laufen zu bringen. Leider gibt es die bekannten Probleme mit CGI
Hat bei mir leider nicht funtkioniert.
Die Fehlermeldung hat sich von
verändert in:
Grund ist, dass ich wahrscheinlich jede möglich Komination von User/Group für /home & Co ausprobiert habe und jetzt alles verstellt ist und nicht mehr stimmt.
Kann jemand die "orginal" Besitzverhältnisse (owner/group) eines 1&1Rooties posten für folgende Verzeichnisse:
/home
/home/www
/srv
/srv/www
/srv/www/htdocs
Vielen Dank
Lars
PS. Eine Aufnahme in die FAQ wäre wünschenswert :-)
Das Forum und die FAQ sind trotzdem eine große Hilfe.
Ich versuche
http://people.ee.ethz.ch/~dws/software/mailgraph/ zum Laufen zu bringen. Leider gibt es die bekannten Probleme mit CGI
Finde die Idee auch super,Macin wrote:Hallo,
...
also:
mv /srv/www/htdocs /srv/www/htdocs.alt
ln -sf /home/www /srv/www/htdocs
...
Grüsse Macin
Hat bei mir leider nicht funtkioniert.
Die Fehlermeldung hat sich von
Code: Select all
[2004-03-18 00:50:49]: info: (target/actual) uid: (web1/web1) gid: (ftponly/ftponly) cmd: mailgraph.cgi
[2004-03-18 00:50:49]: emerg: cannot get docroot information (/srv/www/htdocs)Code: Select all
[2004-03-18 02:06:42]: info: (target/actual) uid: (web1/web1) gid: (ftponly/ftponly) cmd: mailgraph.cgi
[2004-03-18 02:06:42]: error: target uid/gid (636/101) mismatch with directory (636/8) or program (636/101)Kann jemand die "orginal" Besitzverhältnisse (owner/group) eines 1&1Rooties posten für folgende Verzeichnisse:
/home
/home/www
/srv
/srv/www
/srv/www/htdocs
Vielen Dank
Lars
PS. Eine Aufnahme in die FAQ wäre wünschenswert :-)
Das Forum und die FAQ sind trotzdem eine große Hilfe.
Re: CGI :(
Also, da steht doch alles, oder?! Dein Verzeichnis hat falsche Rechte, es sollte GID 101 haben. man chown bzw. chgrp[2004-03-18 02:06:42]: error: target uid/gid (636/101) mismatch with directory (636/8) or program (636/101)
Re: CGI :(
Deswegen hätte ich ja gerne nochmal die User/Groups der entsprechenden Verzeichnisse damit ich wieder möglichst nahe an der Orginalzustand rankomme umd dann meine Ã?nderungen durchzuführen.dodolin wrote: Also, da steht doch alles, oder?! Dein Verzeichnis hat falsche Rechte, es sollte GID 101 haben. man chown bzw. chgrp
Vielen Dank
Lars
Re: CGI :(
Warum quotest Du die Lösung Deines Problems, statt sie anzuwenden?
PS: Künftig bitte Artikel 5 Absatz 6 unserer Rules beachten, danke.
PS: Künftig bitte Artikel 5 Absatz 6 unserer Rules beachten, danke.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: CGI :(
Das ist Quatsch mit Soße.Deswegen hätte ich ja gerne nochmal die User/Groups der entsprechenden Verzeichnisse damit ich wieder möglichst nahe an der Orginalzustand rankomme umd dann meine Ã?nderungen durchzuführen.
Unter Windows mag es zwar vielleicht üblich sein, seine mysteriösen Probleme durch Neuinstallation zu lösen, unter Linux ist das aber nicht der Weg der Wahl, dafür gibt es doch dort gerade die ganzen Logfiles, damit man Probleme _systematisch_ angehen und lösen kann!
Re: CGI :(
Die Lösung ist SEHR einfach:
1) suexec -V
2) das ausgegebene (falsche) docroot umbenennen mittels:
mv /srv/www/htdocs /srv/www/htdocs.alt
3) einen symbolischen link zum richtigen docroot erstellen:
ln -sf /home/htdocs /srv/www/htdocs
selbstverständlich müssen je nach umgebung die verzeichnisse entsprechend angepasst werden. innerhalb 30 sek. fertig
1) suexec -V
2) das ausgegebene (falsche) docroot umbenennen mittels:
mv /srv/www/htdocs /srv/www/htdocs.alt
3) einen symbolischen link zum richtigen docroot erstellen:
ln -sf /home/htdocs /srv/www/htdocs
selbstverständlich müssen je nach umgebung die verzeichnisse entsprechend angepasst werden. innerhalb 30 sek. fertig
Re: CGI :(
mir ist aufgefallen das hat schonmal jemand gepostet *g*MNG wrote:Die Lösung ist SEHR einfach:
1) suexec -V
2) das ausgegebene (falsche) docroot umbenennen mittels:
mv /srv/www/htdocs /srv/www/htdocs.alt
3) einen symbolischen link zum richtigen docroot erstellen:
ln -sf /home/htdocs /srv/www/htdocs
selbstverständlich müssen je nach umgebung die verzeichnisse entsprechend angepasst werden. innerhalb 30 sek. fertig
wie auch immer, bei mir hats so wunderbar geklappt
-
antondollmaier
- Posts: 485
- Joined: 2004-03-30 10:06
Re: CGI :(
oder:
apache mit dem richtigen suexec-document-root recompilieren ;)
is zwar mehr aufwand, aber dann isses sichriger ... :-D
mfg,
Anton
apache mit dem richtigen suexec-document-root recompilieren ;)
is zwar mehr aufwand, aber dann isses sichriger ... :-D
mfg,
Anton
-
digitaljunkie
- Posts: 11
- Joined: 2004-04-28 14:28
Re: CGI :(
Hallo,
ich habe nen XL Rootserver mit Suse9 und Apache2 und wenn ich die spec-File editiert habe und nun eingeben will:
Also kennt der das Kommando gar nicht. Hat jetzt jemand eine Idee, wie ich meine entpackte und umkonfgurierte RPM installieren kann?
Merci im Vorraus!
ich habe nen XL Rootserver mit Suse9 und Apache2 und wenn ich die spec-File editiert habe und nun eingeben will:
Code: Select all
p15xxxxxx:/# rpm -ba apache2.spec
-ba: unknown option
p15xxxxxx:/#
Merci im Vorraus!
Re: CGI :(
@MNG
danke für den TIPP, schnell, einfach und effizient :)
Gruß
compufix
danke für den TIPP, schnell, einfach und effizient :)
Gruß
compufix
