webForumDet fria alternativet

Premature end of script headers + error 500

26 svar · 2 794 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

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.

GuldstrandMedlem sedan juli 20041 271 inlägg
#2

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>

GuldstrandMedlem sedan juli 20041 271 inlägg
#3

Ingen som vet?

colioneMedlem sedan juni 20014 421 inlägg
#4

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

GuldstrandMedlem sedan juli 20041 271 inlägg
#5

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.

GuldstrandMedlem sedan juli 20041 271 inlägg
#6

Ä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
#7

vad säger den om du kör filen från command line?

nohopeMedlem sedan jan. 20059 inlägg
#8

Gissar på att perlskriptet körs som annan användare.
Testa sätt 777 på katalogen.

GuldstrandMedlem sedan juli 20041 271 inlägg
#9

colione skrev:

vad säger den om du kör filen från command line?

Hur menar du då?

nohope skrev:

Gissar på att perlskriptet körs som annan användare.
Testa sätt 777 på katalogen.

Det hjälpte tyvärr inte.

GuldstrandMedlem sedan juli 20041 271 inlägg
#10

*bump* :r

GuldstrandMedlem sedan juli 20041 271 inlägg
#11

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
#12

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
#13

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.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#14

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å..

GuldstrandMedlem sedan juli 20041 271 inlägg
#15

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
#16

scriptet heter väl inte cgi-bin?

GuldstrandMedlem sedan juli 20041 271 inlägg
#17

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

GuldstrandMedlem sedan juli 20041 271 inlägg
#18

/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
#19

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.

GuldstrandMedlem sedan juli 20041 271 inlägg
#20

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

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)