PDA

Bekijk Volledige Versie : perl: premature end of scriptheaders



Hans
27/03/04, 16:15
Hallo,

Ik heb het volgende perl scriptje (contact1.pl) dat ik niet werkend krijg:

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "hello world";


de foutmelding in de error_log file
[Sat Mar 27 15:51:42 2004] [error] [client 80.127.75.xx] Premature end
of script headers: contact1.pl, referer: http://www.xyz.nl/contact.html
[Sat Mar 27 15:51:42 2004] [error] [client 80.127.75.xx] failed to
open log file /var/log/httpd/suexec_log, referer:
http://www.xyz.nl/contact.html

Wat heb ik gedaan:

1. contact1.pl met notepad op een windows pc aangemaakt
2. contact1.pl als ascii file met ftp naar de server gezet
3. met chmod de permissie op 755 gezet
4. shebang line gecontroleerd bij de provider
5. in contact.html een formuliergemaakt met als actie:
<form method=POST action="/cgi-bin/contact1.pl">

Vraag: wat gaat er verkeerd
Vraag: wat is de suexec_log?

mvg,
Hans





---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.644 / Virus Database: 412 - Release Date: 26-3-2004

Daniel Tryba
27/03/04, 16:55
Hans <dummydummy@dummy.nl> wrote:
> Ik heb het volgende perl scriptje (contact1.pl) dat ik niet werkend krijg:
>
> #!/usr/bin/perl
> print "Content-type: text/plain\n\n";
> print "hello world";

<q src='http://www.ietf.org/rfc/rfc2616.txt'>
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
protocol elements except the entity-body (see appendix 19.3 for tolerant
applications). The end-of-line marker within an entity-body is defined
by its associated media type, as described in section 3.7.
</q>

MAW ovenstaande script levert in z'n geheel 1 foutief afgesloten header
op, dat komt dan ook overeen met de foutmelding.

--

Daniel Tryba

Hans
27/03/04, 18:55
Hallo Daniel,

> MAW ovenstaande script levert in z'n geheel 1 foutief afgesloten header
> op, dat komt dan ook overeen met de foutmelding.

Misschien begrijp ik je niet goed. Ik heb met een hex editor nog even in het
bestandje contact1.pl gekeken en na de laatste ; staat decimaal 013 en 010
(en dat is de CR en de LF). Effect : geen

Ik heb ook nog de cr en lf verwijderd uit de laatste regel: Effect : geen.
Wat zie ik over het hoofd?

Hans


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.644 / Virus Database: 412 - Release Date: 26-3-2004

Daniel Tryba
27/03/04, 21:25
Hans <dummydummy@dummy.nl> wrote:
>> MAW ovenstaande script levert in z'n geheel 1 foutief afgesloten header
>> op, dat komt dan ook overeen met de foutmelding.
>
> Misschien begrijp ik je niet goed. Ik heb met een hex editor nog even in het
> bestandje contact1.pl gekeken en na de laatste ; staat decimaal 013 en 010
> (en dat is de CR en de LF). Effect : geen

Ik bedoelde inderdaad niet de regeleindes in het cgi bestand zelf. Maar
de regels die print. Daar staat "\n\n", probeer het eens met "\r\n\r\n".

--

Daniel Tryba

John Bokma
28/03/04, 06:15
Hans wrote:

> Hallo,
>
> Ik heb het volgende perl scriptje (contact1.pl) dat ik niet werkend krijg:
>
> #!/usr/bin/perl

zet achter die regel -T, en lees wat het betekent.

gebruik vervolgens:

use strict;
use warnings;

use CGI;

lees vervolgens de documentatie van CGI.pm (tik: perldoc CGI)

> print "Content-type: text/plain\n\n";
> print "hello world";

Lees dan ook eens over here-documents, in de perldocumentatie.

> Wat heb ik gedaan:
>
> 1. contact1.pl met notepad op een windows pc aangemaakt

Gebruik textpad, of een andere fatsoenlijke editor.

> 2. contact1.pl als ascii file met ftp naar de server gezet

Gebruik FileZilla hiervoor, die kan onder andere ook:

> 3. met chmod de permissie op 755 gezet

Dat doen. Gebruik secure ftp in FileZilla

> 4. shebang line gecontroleerd bij de provider

Heb je het script via de shell gestart? Dat kan mbv PuTTY, die een
veilige verbinding voor je opzet. (Gebruik niet de telnet mode, of
telnet zelf)

> ---
> Outgoing mail is certified Virus Free.

Je sig sep is fout, en dit is geen mail

--
John personal page: http://johnbokma.com/

Freelance Perl / Java developer available - http://castleamber.com/

John Bokma
28/03/04, 06:25
Daniel Tryba wrote:

> Hans <dummydummy@dummy.nl> wrote:
>
>>Ik heb het volgende perl scriptje (contact1.pl) dat ik niet werkend krijg:
>>
>>#!/usr/bin/perl
>>print "Content-type: text/plain\n\n";
>>print "hello world";
>
> <q src='http://www.ietf.org/rfc/rfc2616.txt'>
> HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
> protocol elements except the entity-body (see appendix 19.3 for tolerant
> applications). The end-of-line marker within an entity-body is defined
> by its associated media type, as described in section 3.7.
> </q>
>
> MAW ovenstaande script levert in z'n geheel 1 foutief afgesloten header
> op, dat komt dan ook overeen met de foutmelding.

Hoeft niet, het script kan ook al eerder sneuvelen.

Het script doet het hier overigens, (Linux 2.4.25) goed :-D.

--
John personal page: http://johnbokma.com/

Freelance Perl / Java developer available - http://castleamber.com/

robert
28/03/04, 10:45
John Bokma <postmaster@castleamber.com>:
> Het script doet het hier overigens, (Linux 2.4.25) goed :-D.

Probeer nu eens het script DOS regeleinden te geven (het script zelf, niet
de headers).

--
robert

Hans
28/03/04, 10:55
Hallo John,

>
> Gebruik textpad, of een andere fatsoenlijke editor.
>
ik heb inmiddels pfe gedownload en het bestand weggeschreven als unix file.
Probleem opgelost.
TNX!!


mvg,
Hans

John Bokma
28/03/04, 12:55
robert wrote:

> John Bokma <postmaster@castleamber.com>:
> > Het script doet het hier overigens, (Linux 2.4.25) goed :-D.
>
> Probeer nu eens het script DOS regeleinden te geven (het script zelf, niet
> de headers).

Dat hoort ASCII overdracht toch goed te doen? Ja, ik geef toe, ik heb
het script met vi op mijn server aangemaakt :-D. Krijg ik nu toch nog 1
nerd punt?

--
John personal page: http://johnbokma.com/

Freelance Perl / Java developer available - http://castleamber.com/

Iceman
29/03/04, 22:55
> > Gebruik textpad, of een andere fatsoenlijke editor.
> >
> ik heb inmiddels pfe gedownload en het bestand weggeschreven als unix
file.
> Probleem opgelost.
> TNX!!

Gefeliciteerd, ik gebruik pfe al jaren.
Waarschijnlijk ging het fout omdat je ftp-programma *.pl als onbekend dus
binair behandelt. Bewijs: als met de oude methode de bestandsomvang op de
server in bytes exact gelijk is aan lokaal (op pc) ipv kleiner (ascii). Dan
leest perl de tweede regel als beginnend met \r, resultaat deze foutmelding.

André