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. Customers may write scripts in PERL, C, C++.

Here are some helpful tips to follow when installing scripts;

UNIX Shell Scripts

  1. Upload to your cgi-local directory to ensure proper file permission settings
  2. Upload in ASCII transfer mode (and NOT BINARY mode). Use an FTP program to do this; FrontPage will not upload in ASCII mode.
  3. The first line of each script must read: #!/bin/sh , #!/bin/csh or #!/bin/ksh based on whichever shell scripts you prefer using.
  4. Reference the script using /cgi-local (and NOT /cgi-bin)
  5. Always remember to include echo "Content-type: text/html\n\n" before any other output.

Perl Scripts

  1. Upload to your cgi-local directory to ensure proper file permission settings
  2. Upload in ASCII transfer mode (and NOT BINARY mode)
  3. The first line of each script must read: #!/usr/local/bin/perl
  4. Use the Perl script checker in your Control Panel to check syntax.
  5. Reference the script using /cgi-local (and NOT /cgi-bin...unless you have an NT account)
  6. Always remember to include print "Content-type: text/html\n\n"; or alternatively use the Perl module CGI.pm as shown below. 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();

File Paths

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. See Making Your CGI-scripts Server Independent for more information.

e.g.

From:
/www23/web/yourid/data/fact.html

To:
$ENV{DOCUMENT_ROOT}/data/fact.html

System Commands

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

The UNIX system path to the ping command is
/usr/etc/ping

Automated Tasks (cron.sh)

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.

C Compilations

We can run only two C compilations for you. As such, we suggest Perl as an alternative scripting language. C++ is NOT supported.

If you would like to implement code that is written in C, you will first need to create and upload a makefile to your hosting account's cgi-local directory along with the source code. Once the makefile and code has been uploaded, you will need to contact Technical Support request that we compile the code. Note: You must create the makefile; we cannot compile the code without a makefile.

The code for a simple makefile is included below. If you need further information on creating makefiles, we suggest that you review the 'make' documentation or consult a tutorial on the 'make' program. We are unable to assist in the creation or editing of the makefile.

The following is a samle makefike:

CC=cc
AR=ar

test: test.cgi
test.cgi: test.h test.c ${CC} -o test.cgi test.c

Other Resources

DOS based Perl editor
Comprehensive Perl Archive Network
Perl FAQ
Web Design Group's FAQ Archives
JavaScript Frequently Asked Questions
The CGI Resource Index

Newsgroups
comp.lang.perl.misc
comp.infosystems.www.authoring.cgi

Please note: the information on this page applies to ITS web hosting plans. It may or may not apply to other environments. If you are looking for a feature described here, or better support from your hosting provider, please consider hosting your site with ITS!

1555 N Naperville/Wheaton Road, Suite 107
Naperville, IL 60563
phone 630.420.2550
fax 630.420.2771