Får följande fel när jag försöker köra ett cgi script.
Serverfel!
Servern råkade ut för ett internt fel och det var inte möjligt att slutföra din begäran.
Felmeddelande:
Premature end of script headers: ubr_upload.pl
Om du tror att detta beror på ett serverfel, vänligen kontakta webbansvarig.
Error 500
Vad betyder det, och hur löser jag det?
Både filen ubr_upload.pl samt katalogen /cgi-bin har rättigheterna 755.
Jag har följande i vhosts.conf:
<VirtualHost *>
ServerAdmin info@site.org
DocumentRoot "/mnt/www2/site"
ServerName site.org
ServerAlias https://www.site.org
ScriptAlias /cgi-bin/ "/mnt/www2/site/cgi-bin/"
<Directory "/mnt/www2/site">
Options Indexes FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi .pl
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
colioneMedlem sedan juni 20014 421 inlägg ge mig de tio första raderan i scriptet.
samt:
ls -al /mnt/www2/site/cgi-bin/
även:
which perl
Vet du om den kör under suEXEC?
Isf kan det vara en idé att kolla den loggen också. Typ här:
/var/log/apache/suexec.log
ls -al /mnt/www2/site/cgi-bin/
totalt 44
drwxr-xr-x 2 root root 4096 2008-12-08 05:56 ./
drwxr-xr-x 27 root root 4096 2008-12-08 05:39 ../
-rwxr-xr-x 1 root root 756 2008-12-08 20:36 1.cgi*
-rwxr-xrwx 1 root root 29004 2008-12-08 05:20 ubr_upload.pl*
which perl
/usr/bin/perl
(Jag bifogade hela cgi-filen som txt.)
EDIT: suEXEC verkar inte vara installerat.
Är oerhört tacksam för all hjälp jag kan få. :bire
Kan "felet" bero på att mina hemsidor finns på en annan hdd som är mountad under /mnt på min master?
(Både mysql, apache, php och annat finns installerat på min "master".)
Sorry för alla dumma frågor...
colioneMedlem sedan juni 20014 421 inlägg vad säger den om du kör filen från command line?
nohopeMedlem sedan jan. 20059 inlägg Gissar på att perlskriptet körs som annan användare.
Testa sätt 777 på katalogen.
När jag körde scriptet direkt i konsolen, fick jag:
[root@localhost ~]# perl -w /mnt/***/cgi-bin/ubr_upload.pl
Can't locate CGI/Carp.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.10.0 /i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_p erl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/pe rl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_per l /usr/lib/perl5/vendor_perl .) at /mnt/***/cgi-bin/ubr_uploa d.pl line 34.
BEGIN failed--compilation aborted at /mnt/***/cgi-bin/ubr_upl oad.pl line 34.
Carp.pm finns under /usr/lib/perl5/5.10.0/
:x
EDIT: Jag lyckades att fixa "felet" med Carp.pm.
Skapade en test (test.pl), och den fungerade bra att köpa direkt i konsolen.
[root@localhost ~]# perl -w /mnt/***/cgi-bin/test.pl
Content-type: text/html
Hello, World.
MEN.. jag kan inte köra filen i webbläsaren.
[Wed Dec 10 05:35:55 2008] [error] [client xx.xxx.xxx.xxx] (13)Permission denied: exec of '/mnt/***/cgi-bin/test.pl' failed
[Wed Dec 10 05:35:55 2008] [error] [client xx.xxx.xxx.xxx] Premature end of script headers: test.pl
nohopeMedlem sedan jan. 20059 inlägg Skickar du korrekt header och skickar du den först innan annat skickas till webbläsare? Har du typ 755 rättigheter på filen? Är sökvägen till perl korrekt?
Content-type: text/plain\n\n
colioneMedlem sedan juni 20014 421 inlägg Att köra scripten med perl -w innan förtar lite av poängen. Ta bort båd perl och -w och se vad du får för resultat.
Sen kan du ju ven få posta loggen du får på den första filen.
Om man kontrollerar ubr_upload.pl filen så nyttjar den sig av Content-type, ex rad 555.
Så länge !$print_issued
Men när det kommer till sådana här saker så är det ju lite jobbigare.. "Premature end of script headers", kan ju vara typ vad som helst..
Och eftersom att han inte kan göra filen i webbläsaren, detta verkar bero på någon behörighetssak.
[Wed Dec 10 05:35:55 2008] [error] [client xx.xxx.xxx.xxx] (13)Permission denied: exec of '/mnt/***/cgi-bin/test.pl' failed
När jag kollade lite högre upp så är ägaren av filerna root:
drwxr-xr-x 2 root root 4096 2008-12-08 05:56 ./
drwxr-xr-x 27 root root 4096 2008-12-08 05:39 ../
-rwxr-xr-x 1 root root 756 2008-12-08 20:36 1.cgi*
-rwxr-xrwx 1 root root 29004 2008-12-08 05:20 ubr_upload.pl*
Det hör väl inte till det vanliga! Om man skall köra filerna genom en webbserver.. får servern exekvera en server-side fil som har rooträttigheter så kan mycket lull lull ske om fel person leker på..
Jag misstänker också att det är något knas med rättigheterna, men hur löser jag det?
colione skrev:
Att köra scripten med perl -w innan förtar lite av poängen. Ta bort båd perl och -w och se vad du får för resultat.
[root@localhost ~]# /mnt/***/cgi-bin/
-bash: /mnt/***/cgi-bin/: is a directory
colioneMedlem sedan juni 20014 421 inlägg scriptet heter väl inte cgi-bin?
colione skrev:
scriptet heter väl inte cgi-bin?
Ooops.. nej det gjorde det inte.
Nu fick jag:
-bash: /mnt/***/cgi-bin/ubr_upload.pl: /usr/bin/perl: bad interpreter: Ã
tkomst nekas
/etc/fstab
# Entry for /dev/sdb1 :
UUID=ccd29177-6f08-469f-9a7d-74f655f7defa / ext3 relatime 1 1
# Entry for /dev/sdb6 :
UUID=e12c9c55-4904-4258-b3b1-c9d1d2784e40 /home ext3 relatime 1 2
/dev/cdrom /media/cdrom auto umask=0,users,iocharset=utf8,noauto,ro,exec 0 0
/dev/fd0 /media/floppy auto umask=0,users,iocharset=utf8,noauto,exec,flush 0 0
# Entry for /dev/sdb6 :
UUID=0ebb77c4-b774-11db-9c13-8feccf4dad7f /mnt/www ext3 user 1 2
none /proc proc defaults 0 0
# Entry for /dev/sdb5 :
UUID=09394c37-9248-41ce-b036-ca23a90365fd swap swap defaults 0 0
# Entry for /dev/sda5 :
UUID=bab704db-fd4f-41f7-bb54-1fa2767cec1e swap swap defaults 0 0
Alla hemsidor ligger under /mnt/www på /dev/sdb6.
colioneMedlem sedan juni 20014 421 inlägg Har du eiterat filen på en windows-holk? Det kan hända om man har windows line-endings på filen....du skulle även kunna prova att lägga till exec i mount optios i fstaben på /mnt/www samt /
Du kan ju även prova att ladda upp filen igen och tvinga ascii-läge.
colione skrev:
Har du eiterat filen på en windows-holk? Det kan hända om man har windows line-endings på filen....du skulle även kunna prova att lägga till exec i mount optios i fstaben på /mnt/www samt /
Du kan ju även prova att ladda upp filen igen och tvinga ascii-läge.
Nej det har jag inte.
Jag laddade upp filen direkt via ftp, och sedan ändrade jag i filen (via ftp).
Ok, ska testa att lägga till "exec". ;)
EDIT: När jag lade till "exec" i /etc/fstab, då mountades inte disken som den skulle, så jag tog bort det igen. *suck*
Jag kanske lade till det på fel ställe? :r