Hej!
Varför körs inte perl programmen under cgi-bin när jag gör script alias :q
Jag har gjort så att man för varje anv har en katalog som heter public_html där man lägger sina html sidor m.m. det jag då vill är att ha en mapp som heter cgi-bin som ligger i public_html där jag kan köra perl script
Att styra om så att html sidorna funka gick bra men när jag skall göra samma sak för cgi katalogen så funkar det inte.
Programmen körs inte utan den skriver ut koden som om det vore en txt fil man har länkat till :l Under /var/www/cgi-bin/ funkar perl filerna som dom skall.
Hur gör jag??
Script Alias cgi-bin
25 svar · 775 visningar · startad av nordan
Ingen som kan detta?
Snälla hjälp mig :l
Du måste ha ExecCGI påslaget för att det ska gå.
http://httpd.apache.org/docs/howto/cgi.html
Frågan är en FAQ, så jag föreslår att du börjar där. :)
Hallå!
Oki har kollat på länken
http://httpd.apache.org/docs/misc/FAQ.html#user-cgi
och fått mitt lilla perlscript att reagera :) dock inte som jag vill
Nu är jag inte hundra på om jag placera detta
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>
på rätt ställe
Placera det under:
<IfModule mod_userdir.c>
UserDir public_html
HÄR
</IfModule>
Man skulle skriva in det under public_html directory och detta är det ända jag hittar som inte är bortkommenterat
Oki när jag har skrivigt in detta så blir det iaf fel och i error_loggen står detta fel Premature end of script headers Och då tog man ju åt sig av Robba och kolla FAQ först
http://httpd.apache.org/docs/misc/FAQ.html#premature-script-headers
Men såklart hajja jag inte det någon som kan hjälpa till?
Jag har iaf kollat om scriptet är fel eller inte men det funkar fin fint :)
Kan någon :q
Hur ser scriptet ut?
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello world";
Hur flyttar du skriptet till public_html/cgi-bin? Med FTP, eller?
Fungerar skriptet om du kör det från skalet när det ligger i public_html/cgi-bin?
Hur flyttar du skriptet till public_html/cgi-bin? Med FTP, eller?
Nope jag lägger in det i cgi-bin katalogen med chmod 755
Fungerar skriptet om du kör det från skalet när det ligger i public_html/cgi-bin?
Ja om du menar att jag skall köra skripet såhär perl hello.cgi
i /public_html/cgi-bin/
Nu har jag iaf fått ett annat error :birp Options ExecCGI is off in sökväg till cgi katalogen hur sätter jag på det?
Detta är vad jag har där
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>
Om du redan har Options ExecCGI utanför gällande <Directory> så blir värdena för Options istället avstängda om man inte använder +
Det bör alltså vara Options +ExecCGI
Jag får inte CGI skripten att funka i public_html/cgi-bin/ :l
Jag fick Options Indexes att funka i den katalogen men inte ExecCGI .
Någon som har lust att kolla på denna fil och tala om vad jag har gjort för fel?
Error loggen säger just nu Premature end of script headers
http://hem.passagen.se/load/httpd.txt
Ja om du menar att jag skall köra skripet såhär perl hello.cgi ...
Nej, jag menar att du skall köra skriptet som vilket annat program som helst, inte sätta perl framför.
./hellp.cgi
Ibland kan man nämligen lyckas få med osynliga skräptecken i slutet av första raden (den som pekar ut Perl-tolken), speciellt om Windows är inblandat någonstans (att man t.ex. har skrivit skriptet i Windows).
Öppnas skriptet i vi så brukar sådana tecken synas (t.ex. som ^M i slutet av raden).
:D Nu tror jag att jag har hittat felet iaf
Vad jag tror att det är:
Den som har kontot i mitt fall ANV: Nordan måste vara ägare till filen som skall köras.
ANV: Nordan måste oxå sätta rättigheterna på filen.
Är detta rätt?
Isf
Går det inte att vara root och lägga in filer i användarnas mappar?
Jag skulle vilja ha en fil i varje cgi-bin mapp som heter hello.pl som jag då har lagt i /etc/skel/ hur göra man då med rättigheterna på filen?
Kan man byta användare på samma sätt som man göra med su
Vem som äger filen spelar egentligen inte så stor roll utan handlar mer om vilka som kan accessa den. Är du root eller någon annan så kan du chmodda filen så andra kan exekvera den, exempelvis webbservern. 755 är ju normalt att använda för cgi-skript.
En liten rättelse också från ovan. Det är tydligen så att alla värden i Options som ligger som default, blir nollade så snart man anger en Options i t.ex <Directory> (såvida man inte lägger till + framför).
I ditt fall bör du ha + framför både Indexes och ExecCGI om du samtidigt vill ha kvar tidigare värden. Ett minus framför anger att man tar bort just det värdet från tidigare gällande options.
Vem som äger filen spelar egentligen inte så stor roll utan handlar mer om vilka som kan accessa den. Är du root eller någon annan så kan du chmodda filen så andra kan exekvera den, exempelvis webbservern. 755 är ju normalt att använda för cgi-skript.
Jag gör så men det funkar inte Men loggar jag in som en användare så funkar det och alla kan köra användarens fil?
Vad är det då för fel vet någon?
Så här har jag gjort
Katalogen Nordan/ chmod 711
Katalogen /public_html/ chmod 755
Katalogen /cgi-bin/ chmod 755
Scriptet hello.cgi och hello.pl chmod 755
Det går att köra scripten om jag är inloggad och chmodar katalogerna och scripten som Nordan
Är jag inloggad som root och gör tex ett script som heter test.pl och lägger det i Nordan/public_html/cgi-bin/ så får jag fel.
Vad jag förstår av tidigare svar så skall det gå att göra så?
Varför går det då inte
Vad kan det vara som jag har gjort fel?
Någon som vet?
Rättigheterna måste vara rätt satta hela vägen from / och neråt, har du 700 någonstan på vägen så spärrar den.
Ex. /export/home/foobar/public_html
Här måste /export, /export/home, /export/home/foobar och /export/home/foobar/public_html ha minst 711 för att webserver skall kunna läsa filerna.
Så här ser det ut när jag skriver ls -l
-rwxr-xr-x 1 root root 87 jun 7 15:12 test.cgi
-rwxr-xr-x 1 Nordan2 Nordan2 137 jun 6 20:37 hello.cgi
Filen som det står Nordan2 på funkar men inte den som det står root på
Jag har alltså loggat in som Nordan2 och gjort filen och då funka det men när jag skapar en fil som root och lägger i Nordan2s cgi-bin så funkar det inte det ända jag kan hitta som är skillnad är vem som har skapat filen.
Vad gör jag :q
Vad står det i error loggen när du försöker köra scriptet?
Kan du köra det genom att skriva ./test.cgi när du står i den katalogen och är inloggad som Nordan2?