Bill Hutten
2008-May-05 23:57 UTC
[Xapian-discuss] Dreaded "Premature end of script headers: omega"...
Hi all: I've (almost) successfully setup Xapian and Omega on a Linux machine - the index has been created successfully, and using omega from the command line works perfectly... However - it's not working as a CGI - I consistently get "Premature end of script headers: omega" in the Apache error log. I've placed the "omega" executable in the cgi-bin directory, along with the "omega.conf" file. (Is the .conf file required to be "beside" the omega executable)? I've also checked permissions - my cgi-bin directory is owned by "southshore.psaserv", as is the omega executable and the omega.conf. I'm obviously missing something... anyone care to point it out to me? I've checked the mailing list archives and the only suggestion was to make sure that the permissions on the omega executable matched the permissions on the cgi-bin directory - but they seem to match fine... Help appreciated. - bill --- bill at hutten.org
Olly Betts
2008-May-06 09:45 UTC
[Xapian-discuss] Dreaded "Premature end of script headers: omega"...
On Mon, May 05, 2008 at 08:57:42PM -0300, Bill Hutten wrote:> I've (almost) successfully setup Xapian and Omega on a Linux machine - > the index has been created successfully, and using omega from the > command line works perfectly...OK, that's good so far.> However - it's not working as a CGI - I consistently get "Premature > end of script headers: omega" in the Apache error log.In case you aren't aware, this generally means "script died before writing any output" (strictly speaking, before writing a blank line to end the headers, but it's rare to die halfway through the headers for a CGI which works elsewhere.> I've placed the "omega" executable in the cgi-bin directory, along > with the "omega.conf" file. (Is the .conf file required to be > "beside" the omega executable)?It's not *required* to be there, but that is one of the places it can be. For more details, see the "omega configuration" section here: http://xapian.org/docs/omega/overview.html> I've also checked permissions - my > cgi-bin directory is owned by "southshore.psaserv", as is the omega > executable and the omega.conf. > > I'm obviously missing something... anyone care to point it out to me? > I've checked the mailing list archives and the only suggestion was to > make sure that the permissions on the omega executable matched the > permissions on the cgi-bin directory - but they seem to match fine...You've already ruled out the Omega-specific parts (since Omega runs from the command line), so it's really an exercise in generic CGI debugging at this point. Unfortunately, this sort of thing isn't easy to debug remotely as I don't know anything about how your server is set up. You need to look at differences between your environment and that which the CGI gets run as from the webserver. Environment variables are one issue. Another is the user/group which runs CGI scripts. Some things to check: * If you're able, try running omega *as the user which runs CGI scripts* from your shell (e.g. using su). You'll probably need root access for that though. * Is the omega CGI binary readable and executable by the user which CGI scripts run as? * Did you symlink the omega binary to the CGI directory? Some servers don't like symlinked CGI scripts. * Write a simple CGI script to dump environment variables and put it in the same CGI directory as omega, with the same permissions. Assuming it runs, compare output with printenv in your shell. Something as simple as this will probably do: #!/bin/sh echo "Content-Type: text/plain" echo printenv Consider any differences carefully, but one particular thing to looks for - Omega should get an rpath set if xapian-core isn't on the standard library search path, but if you needed to set LD_LIBRARY_PATH for some reason, you'll need to ensure that this is set when it is run. Cheers, Olly