Zoom Search Engine FAQ - Troubleshooting CGI
Q. I have uploaded
my files but get an error "no search query entered", or
"error reading ..." or "Forbidden you don't have
- Check that you have uploaded all files required (listed at the
end of indexing).
- Check that you have uploaded these files in binary mode
with your FTP client (NOT ascii or text mode)
- Check that you have public read permissions on all files uploaded
(all the .zdat files, as well as the search_template.html)
- Check that you have specified execute permission ("chmod
755" via FTP) on the CGI file (search.cgi)
- Check that you have uploaded your search files to a location
on the server that has permission to run CGI files. Many hosting
companies only allow CGI programs to run from within the "cgi-bin"
directory on the server.
Q. I get a "404 Page not found"
message when running the CGI.
First, check the above list of common
Make sure you have the correct file path for accessing the CGI
you uploaded. Check if you have any virtual or redirected paths,
or server side folder aliases set up. This may be misleading as
to where the actual contents of the folder is located in FTP.
If you are using an IIS 6.0 server, check the FAQ further below
regarding configuring IIS for CGI. IIS 6.0
returns a "404" error when CGI is not properly configured.
If your web server is running Slackware, check that it is
running at least Slackware 7.0 or later. Earlier versions of Slackware
has a required library as a installation option rather than as a
core part of the system. If you are using a more recent version
of Slackware and you still can not get it to work, then contact
us via the email address on the Support
Q. I get a "500 Internal
Server Error" message when running the CGI.
First, check the above list of common
Next, check that you have selected the correct build for your server's
operating system. There is a Target OS selection window after you
click on "CGI" in the Indexer. Note that you must re-index
your site and re-upload the files after changing this option before
it will take effect.
If this does not solve your problem, then check the following questions
regarding "Premature end of script"
error and "Unrecognized character"
Q. I get a "Premature end
of script headers" error
Q. I get an error similar to "Unrecognized
character \x90 ... "
Q. I get a "The specified CGI application misbehaved by not returning a complete set of HTTP headers" error
For IIS users
Your web server may be configured to handle all CGI files as Perl
scripts. The Zoom CGI search application however is NOT a Perl script,
but a binary executable, so it will fail to run in this web server
You can work-around this issue by renaming the "search.cgi"
file to be "search.exe". Also consult our support page dedicated to setting up CGI for Windows
If the above does not help, your problem may be due to a bug in IIS 5.0 and IIS 6.0 related to running on a fast multi-processor computer. For more information and a hotfix from Microsoft, see this knowledge base article on Microsoft's website.
For Apache users
There are a number of different situations which may result in
this error message, and they are all related to the way your Apache
server is configured.
First, your Apache server may be using suEXEC,
which is a feature that handles the execution of CGI and scripts
and allows them to run under your own user ID (with a number of
security restrictions). If this is the case, you must make sure
that the "search.cgi" file does not have write permissions
enabled for anyone besides yourself. ie: make sure you do NOT have
"search.cgi" set to a "chmod 777" setting. Likewise
with the "cgi-bin" folder, or any of the .zdat files.
You should only need to specify "chmod 755" for "search.cgi"
(and the "cgi-bin" folder), and "chmod 644"
for the .zdat files.
Even the log folder must not have public write permission. The
log folder should only be permitted for owner write (eg: "chmod
744"). This will be enough for the logging to work under the
suEXEC security model, because all CGIs will be running under your
own user ID.
If the above does not solve your problem, then you should
check if your server is configured to handle all CGI files as Perl
scripts. The Zoom CGI search application is NOT a Perl script, but
a binary executable, so it will fail to run in this web server configuration.
You will need to change your server configuration via the "httpd.conf"
file. If your "cgi-bin" folder do not contain any other
Perl scripts, then you can change the settings to use "cgi-handler",
instead of "perl-handler". However, if your "cgi-bin"
folder does contain Perl scripts, then it may be best to
create a separate directory for non-Perl CGI, and add it to your
"httpd.conf" file. Specify handlers for it the same way
as your existing cgi-bin directory, but use "cgi-handler"
instead of "perl-handler".
Another possibility for this error message is if the Apache RLimitCPU
directives are set too low and the CGI is being killed off by the
server, whilst in the middle of execution.
If you can not make the server configuration changes above, you
should contact your web host regarding the execution of binary CGI
If your web host will not allow you to run binary CGI files,
you can use one of the scripted alternatives such as PHP
and ASP. Both of these are functionally
identical except for being slower on very large sites (while CGI
offers a more enterprise solution). You can see a comparison of
their performance on our benchmarks
page. If you are unsure what PHP, ASP or CGI are, you can also
find more information here.
Q. The search stats report tool is failing
to load my CGI log file
Note that Apache does not allow text files to be served via HTTP
from the cgi-bin directory (it treats all files as scripts). As
a quick test, try to open the file from the HTTP address via your
web browser - and see if it returns an error. If so, this would
be why Zoom was unable to retrieve the file.
What you should do is either:
- Download the file via FTP, and open the local copy of the file
from the search stats reports window.
- Change your search log path to somewhere outside of the cgi-bin
directory. eg. instead of "./logs/searchwords.log",
something like "../logs/searchwords.log", so that it
will be accessible from a URL like "http://www.mysite.com/logs/searchwords.log"
and NOT "http://www.mysite.com/cgi-bin/logs/searchwords.log"
Note the need for the appropriate folder permissions if you intend
to store your log files in a different directory.
Q. Search.cgi returns "bad ELF interpreter: No such file or directory" error
While trying to debug search.cgi by running the Linux version from the Linux command line. You might get this error
bash: ./search.cgi: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
This can occur if you are running the 32bit search.cgi on a 64bit version of Linux without the 32bit Linux libraries installed.
Installing the 32bit libraries can resolve this error. For example on Ubuntu run this command.
sudo apt-get install ia32-libs
Different command may be required depending on your Linux distribution.