|
What
is CGI Scripts?
CGI (Common Gateway Interface) is a process used by the server
to pass information between the user and an application on the
server. With CGI access, you can install Perl scripts on your
website for such things as feedback forms, guestbooks, counters,
and so on.
What information and server paths do i need to run CGI
scripts?
CGI scripts must be run from the cgi-bin directory which is
outside the httpdocs directory. CGI scripts need to have a .cgi
or .pl extension.
cgi-bin absolute path = /var/www/vhosts/yourdomain.com/cgi-bin/yourscript.cgi
cgi-bin relative path = /cgi-bin/yourscript.cgi
cgi url = http://www.yourdomain.com/cgi-bin/yourscript.cgi
public directory absolute path = /var/www/vhosts/yourdomain.com/httpdocs
path to Perl = /usr/bin/perl
path to sendmail = /usr/sbin/sendmail
path to the date program = /bin/date
My CGI Script is not working.. Can you help me?
Our support does not cover CGI script debugging. We consider
this a function of web design and we would have to charge you
hourly for web design.
We make sure that CGI is enabled for your site, Perl is
working properly on the server and give you the correct paths to
Perl, but we do not have the resources to debug any CGI scripts
for our customers. If we did we would need to charge an hourly
rate for web development. The same is true for the
troubleshooting of html, PHP, javascript, and so on.
Here are a few things to try when you are troubleshooting a
CGI script:
- First of all, thoroughly read through the instructions
that came with the script and also check the website where
the script was downloaded for troubleshooting info and user
forums.
- Make sure that you have uploaded your script to your cgi-bin
which is one level up from your public httpdocs directory.
- Check to see if the script was uploaded to the server in
the proper format (ASCII not binary).
- Make sure that there are not any DOS/Windows carriage
returns (ie. ^M) at the end of each line in the script. This
is usually caused by a text editor or FTP program that is
not properly uploading your script in a Unix/Linux format.
If this is happening, try changing your code line break
settings or upload settings to Unix/Linux.
Here's how this is done in Dreamweaver: From the menu,
goto Edit > Preferences > Code Format, then change
Line Breaks to "LF (Unix)".
The ^M is actually the ASCII LF character. Windows uses
CR/LF, Mac uses CR and UNIX uses LF as line terminators.
Most FTP programs translate the line terminators when doing
an "ASCII" or "text" transfer, but they
do not do the translation if it is a binary transfer. The
problem with CGI files is that the FTP program may not
recognize the extension, so it assumes that it is a binary
file. Turning off the auto detect feature and manually
transferring the CGI files as ASCII should solve your
problem. Another option would be to add .cgi/.pl to the list
of ASCII file extensions.
- Check script to make sure that magic comment specifies
where perl is located: #!/usr/bin/perl
- Verify that all the paths are correct, including your
public directory path. Do not use the "www" part
of your domain in your public directory path. See our CGI
server paths section for more info.
- Check to see if all the file permissions are set
correctly. Permissions can be set using an FTP
program that allows permissions to be set on transfer.
Typically scripts are set to be 755, user: read, write,
execute; group: read, execute; other: read, execute (-rwxr-xr-x),
but you should always check your script instructions or
README to be sure.
PLEASE NOTE: For security
purposes, within the cgi-bin, script permissions cannot be
set higher than 755, or user: read, write, execute; group:
read, execute; other: read, execute (-rwxr-xr-x).
- If you have checked all the above and are still receiving
an "Internal Server Error" when trying to execute
the script, check the domain's error_log file within /usr/local/plesk/apache/vhosts/logs.
Most likely you will see a "Premature end of script
headers" error which usually means that the file has
been corrupted in some way. This can occur when the script
is uploaded or when the script is edited and saved in
certain text editors. Usually the file is corrupted with the
(line feed) hidden character which is commonly mistaken with
the (carriage return).
- Since installing a CGI script is extremely difficult for
new webmasters, you may want to consider asking a friend
with CGI (Perl) experience to walk you through the process
or hire a webmaster for this part of your site.
|