this is a problem that's been driving me nuts ever since i first tried it.
i can create simple, minimal scripts in Python, Perl, and PHP that run flawlessly on the first try with minimal effort, both on my local testing system (Apache 2.0.52 and Ruby 1.8.2) and on the server my personal site is hosted on (Apache 1.3.33 and unknown version of Ruby - i'm trying to find out). but no matter what i try, i simply can not get even the most minimal ruby script to function:
it runs perfectly fine at the console, no warnings, no errors, no problems. but as a CGI script, it's another story: i get an error 500 and the cryptic (and seemingly common) "Premature end of script headers". no other warnings or errors. if i simply change "ruby" to "python" on the shebang line, the above script magically works with no other effort on my part.
i'm going insane because nothing, AFAICT, is wrong. the server is correctly set-up, permissions are correct, ownership is correct, ruby is installed and working, yet NOTHING seems to coax it into working. it repeatedly reports this incredibly uninformative "Premature end of script headers" error.
is there something i could have missed? a possible misconfiguration? or does ruby just hate me?
>this is a problem that's been driving me nuts ever since i first tried >it.
>i can create simple, minimal scripts in Python, Perl, and PHP that run >flawlessly on the first try with minimal effort, both on my local >testing system (Apache 2.0.52 and Ruby 1.8.2) and on the server my >personal site is hosted on (Apache 1.3.33 and unknown version of Ruby - >i'm trying to find out). but no matter what i try, i simply can not >get even the most minimal ruby script to function:
>it runs perfectly fine at the console, no warnings, no errors, no >problems. but as a CGI script, it's another story: i get an error 500 >and the cryptic (and seemingly common) "Premature end of script >headers". no other warnings or errors. if i simply change "ruby" to >"python" on the shebang line, the above script magically works with no >other effort on my part.
>i'm going insane because nothing, AFAICT, is wrong. the server is >correctly set-up, permissions are correct, ownership is correct, ruby >is installed and working, yet NOTHING seems to coax it into working. >it repeatedly reports this incredibly uninformative "Premature end of >script headers" error.
>is there something i could have missed? a possible misconfiguration? >or does ruby just hate me?
On Sun, 22 May 2005, greyf...@gmail.com wrote: > this is a problem that's been driving me nuts ever since i first tried it.
> i can create simple, minimal scripts in Python, Perl, and PHP that run > flawlessly on the first try with minimal effort, both on my local testing > system (Apache 2.0.52 and Ruby 1.8.2) and on the server my personal site is > hosted on (Apache 1.3.33 and unknown version of Ruby - i'm trying to find > out). but no matter what i try, i simply can not get even the most minimal > ruby script to function:
> it runs perfectly fine at the console, no warnings, no errors, no problems. > but as a CGI script, it's another story: i get an error 500 and the cryptic > (and seemingly common) "Premature end of script headers". no other warnings > or errors. if i simply change "ruby" to "python" on the shebang line, the > above script magically works with no other effort on my part.
[ahoward@localhost ~]$ diff -u a.rb.out a.py.out --- a.rb.out 2005-05-21 17:58:33.000000000 -0600 +++ a.py.out 2005-05-21 17:58:35.000000000 -0600 @@ -1,5 +1,6 @@ 0000000 C o n t e n t - t y p e : t e -0000020 x t / h t m l \n \n < h t m l > < -0000040 b o d y > H e l l o W o r l d -0000060 ! < / b o d y > < / h t m l > \n -0000100 +0000020 x t / h t m l \n \n \n < h t m l > +0000040 < b o d y > H e l l o W o r l +0000060 d ! < / b o d y > < / h t m l > +0000100 \n \n +0000102
so you were just lucky that python and perl were sending you 'extra' newline. you'd have even more issues if you did something like on a unix vs windows box and it's the reason cgi abstraction are made.
<html><body>Hello World!</body></html> [ahoward@localhost ~]$ ruby a.rb < /dev/null | od -c 0000000 C o n t e n t - T y p e : t e 0000020 x t / h t m l \r \n C o n t e n t 0000040 - L e n g t h : 3 9 \r \n \r \n < 0000060 h t m l > < b o d y > H e l l o 0000100 W o r l d ! < / b o d y > < / 0000120 h t m l > \n 0000126
you'll also note that cgis are supposed to send '\r\n' not '\n\n' so the other two never really should have worked anyhow ;-)
> i'm going insane because nothing, AFAICT, is wrong. the server is correctly > set-up, permissions are correct, ownership is correct, ruby is installed and > working, yet NOTHING seems to coax it into working. it repeatedly reports > this incredibly uninformative "Premature end of script headers" error.
this is because the script headers prematurely ended before the content started since \r\n was never seen ;-)
> is there something i could have missed? a possible misconfiguration? or > does ruby just hate me?
doubtful ;-)
-a -- =========================================================================== ==== | email :: ara [dot] t [dot] howard [at] noaa [dot] gov | phone :: 303.497.6469 | My religion is very simple. My religion is kindness. | --Tenzin Gyatso =========================================================================== ====
ES wrote: > Le 21/5/2005, "greyf...@gmail.com" <greyf...@gmail.com> a écrit: > >this is a problem that's been driving me nuts ever since i first tried > >it.
> >i can create simple, minimal scripts in Python, Perl, and PHP that run > >flawlessly on the first try with minimal effort, both on my local > >testing system (Apache 2.0.52 and Ruby 1.8.2) and on the server my > >personal site is hosted on (Apache 1.3.33 and unknown version of Ruby - > >i'm trying to find out). but no matter what i try, i simply can not > >get even the most minimal ruby script to function:
> >it runs perfectly fine at the console, no warnings, no errors, no > >problems. but as a CGI script, it's another story: i get an error 500 > >and the cryptic (and seemingly common) "Premature end of script > >headers". no other warnings or errors. if i simply change "ruby" to > >"python" on the shebang line, the above script magically works with no > >other effort on my part.
> This, actually, goes to the HTTP spec. Try this:
not the case, apparently. it works happily with "\n" instead of "\r\n" and doesn't seem to require the 200 header.
> >i'm going insane because nothing, AFAICT, is wrong. the server is > >correctly set-up, permissions are correct, ownership is correct, ruby > >is installed and working, yet NOTHING seems to coax it into working. > >it repeatedly reports this incredibly uninformative "Premature end of > >script headers" error.
> >is there something i could have missed? a possible misconfiguration? > >or does ruby just hate me?
on one of my test servers, it turns out there is no ruby installed and on another, it seems to be a major misconfiguration. so it seems there's a lot i've missed as my original script runs unmodified on yet another server.
would it have helped if i had not said "magically worked" but instead some more boring phrase like "worked as expected"? or would "mystically worked" have thrown you off as well?
(if this message sounds condescending, it is. i was seriously offended by the verbosity and tone of your post. apologies if you are offended.)
> > i'm going insane because nothing, AFAICT, is wrong. the server is correctly > > set-up, permissions are correct, ownership is correct, ruby is installed and > > working, yet NOTHING seems to coax it into working. it repeatedly reports > > this incredibly uninformative "Premature end of script headers" error.
> this is because the script headers prematurely ended before the content started > since \r\n was never seen ;-)
it works without any linefeeds. newlines are sufficient in all my test cases, irregarldess of my choice of language. all platforms are unix-based, and i've not touched Windows in quite some time, so i'm unsure of its behavior or requirements.
if it's out of spec, it doesn't seem to matter.
> > is there something i could have missed? a possible
misconfiguration? or
> > does ruby just hate me?
> doubtful ;-)
no, it turns out to be a major misconfiguration on my part. there is something seriously wrong with one of my test environments. it works on another server (one of my targets).
> | email :: ara [dot] t [dot] howard [at] noaa [dot] gov > | phone :: 303.497.6469 > | My religion is very simple. My religion is kindness. > | --Tenzin Gyatso
Le 23/5/2005, "greyf...@gmail.com" <greyf...@gmail.com> a écrit:
>Ara.T.Howard wrote: ><snip a bunch of pointless drivel>
>you missed everything i actually said in my post.
>would it have helped if i had not said "magically worked" but instead >some more boring phrase like "worked as expected"? or would >"mystically worked" have thrown you off as well?
>(if this message sounds condescending, it is. i was seriously offended >by the verbosity and tone of your post. apologies if you are >offended.)
Yours is quite a poor attitude to take toward people who are attempting to assist you on their own time, for free, particularly in light of A) your example not being exactly valid HTTP and B) that it appears the problem was somewhere else altogether.
Hopefully your issue is solved, now. If it is not, feel free to askfor further advice but please try to do so with civility and respect.
>> > i'm going insane because nothing, AFAICT, is wrong. the server is >correctly >> > set-up, permissions are correct, ownership is correct, ruby is >installed and >> > working, yet NOTHING seems to coax it into working. it repeatedly >reports >> > this incredibly uninformative "Premature end of script headers" >error.
>> this is because the script headers prematurely ended before the >content started >> since \r\n was never seen ;-)
>it works without any linefeeds. newlines are sufficient in all my test >cases, irregarldess of my choice of language. all platforms are >unix-based, and i've not touched Windows in quite some time, so i'm >unsure of its behavior or requirements.
>if it's out of spec, it doesn't seem to matter.
>> > is there something i could have missed? a possible >misconfiguration? or >> > does ruby just hate me?
>> doubtful ;-)
>no, it turns out to be a major misconfiguration on my part. there is >something seriously wrong with one of my test environments. it works >on another server (one of my targets).
greyf...@gmail.com wrote: > it works without any linefeeds. newlines are sufficient in all my test > cases, irregarldess of my choice of language. all platforms are > unix-based, and i've not touched Windows in quite some time, so i'm > unsure of its behavior or requirements.
> if it's out of spec, it doesn't seem to matter.
I think that's dependent on the web server, or is it the browser? Too late for my poor brain.
Some are "looser" than others, but Ara is quite right in saying that it is supposed to be a CRLF combination.
It really is better to code to the spec -- better to work 100% of the time than 98%.