
Implementing custom CGI scripts
Our UNIX web servers have the capability to run CGI scripts
in your very own "cgi-local" directory. Scripts may be written in Perl, Unix SH,
KSH, CSH, and C (NOT C++) languages. Perl is our language of choice as it is a world
standard and is well suited to CGI. In addition, Perl code does not require manual
compilations whereas C code must be compiled* on our web servers prior to use.
NT hosting customers have a "cgi-bin" directory for
PERL scripts.
Here are some helpful tips to follow when installing scripts;
UNIX Shell Scripts
- Upload to your cgi-local directory to ensure proper file
permission settings
- Upload in ASCII transfer mode (and NOT BINARY mode)
- The first line of each script must read: #!/bin/sh ,
#!/bin/csh or #!/bin/ksh based on whichever shell scripts you prefer using.
- Reference the script using /cgi-local (and NOT /cgi-bin)
- Always remember to include echo "Content-type:
text/html\n\n"
Perl Scripts
- Upload to your cgi-local directory to ensure proper file
permission settings
- Upload in ASCII transfer mode (and NOT BINARY mode)
- The first line of each script must read: #!/usr/local/bin/perl
- Use the Perl script checker in your Control Panel to check
syntax.
- Reference the script using /cgi-local (and NOT /cgi-bin)
- Always remember to include print "Content-type:
text/html\n\n"; or alternatively using the Perl module CGI.pm (If you do not, your
scripts will not run and you will get an Internal Server Error message).
use CGI qw(:cgi-lib :standard);
print header();
If a script calls another file within your account, but the
script does NOT require a URL, you need to use the system path. Instead of using the
absolute path to your home directory ("/www26/web/someid"), you should instead
use the DOCUMENT_ROOT environment variable ($ENV{DOCUMENT_ROOT} in Perl) to determine the
path of your files or programs within a script.
e.g.
From:
/www23/web/yourid/data/fact.html
To:
$ENV{DOCUMENT_ROOT}/data/fact.html
The UNIX system path to the sendmail program on your server
is
/usr/lib/sendmail
The UNIX system path to the date command is
/sbin/date
A cron job can be set up to automatically run a script(s)
within your cgi-local directory (if available). We can schedule one cron job per account
to run between the hours of 2:00AM and 4:00AM ET on a daily basis. To request a cron job,
you will first need to create a shell script which includes the system path to the
script(s) you wish to have executed.
Example:
#!/bin/sh
/u/web/userid/cgi-local/script1.pl
/u/web/userid/cgi-local/script2.pl
In the example above, two scripts located within the account's cgi-local directory will be
run. You can add or subtract lines depending on how many scripts you wish to have
executed. Be sure to substitute the userid of the site in question. URLs or references to
server numbers (e.g. /www23/testco/... will NOT work.)
The newly created shell script must be named
"cron.sh" and be uploaded to your hosting account's cgi-local directory in ASCII
transfer mode. When complete, send your request to Technical Support. If desired,
you can specify a time between the hours of 2:00AM and 4:00AM ET that you would like the
cron job to be scheduled. If no time is specified, the cron job will be scheduled to run
sometime during that period of time.
Once your cron job is scheduled, you can update your cron.sh
as needed without contacting Technical Support unless you wish to change the scheduled run
time.
*** We can run only two C compilations for you. As such, we
suggest Perl as an alternative scripting language. C++ is NOT supported.
Other Resources
DOS based Perl editor
comp.lang.perl.misc
comp.infosystems.www.authoring.cgi
Back to Main Menu |