If your scripts contain server-dependent
code, that is, code which is specific to a particular server, you
would need to rewrite code if you ever decided to move your site
to a different web server. One such occasion would be if you
decided to upgrade to or downgrade from a High Volume account,
since these accounts reside on high volume servers. Another
occasion would be if you ever decided to reuse your scripts for
other accounts, or give your scripts to other people. You should
always try to write code that will run correctly regardless of
what web server it runs on. This makes the script extremely
portable and very easy to maintain.
The most common kind of server-dependent
code is code which accesses files or programs using an absolute
path (such as "/www26/web/someid/somefile"). 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.
For example, if a guestbook script reads:
# Path to your guestbook file
$guestbook = "/www23/web/examp9/data/guest.html";
You should change it to:
# Path to your guestbook file
$guestbook = "$ENV{DOCUMENT_ROOT}/data/guest.html";
If you are writing scripts for others
besides yourself to use, you may wish to take advantage of the
many other environment variables which allow you to write
server-independent code.
Other Commonly used
Server-Independent Codes include:
- AUTH_TYPE
- * only works if you are viewing a
password protected page. If viewing a password protected web
page, this will be the "authentication type".
- DOCUMENT_NAME
- This file's name.
- DOCUMENT_URI
- This document's URL (path and filename)
- GATEWAY_INTERFACE
- The name and version number of the
gateway software running on this server. (CGI/1.1)
- HTTP_USER_AGENT
- The "user agent" or web
browser that the visitor is using. (Mozilla/4.0)
- LAST_MODIFIED
- The last modification date of the
current document. (Tue, 03 Mar 1998)
- PATH
- The paths available to the
"nobody" user of the web server.
- REMOTE_USER
- * only works if you are viewing a
password protected page. If viewing a password protected web
page, this will be the "username".
- REQUEST_METHOD
- The method by which the visitor's web
browser is retrieving the web pages. Choices are GET and
POST.
- REMOTE_HOST
- The translated name of your (the
visitor's) machine.
- REMOTE_ADDR
- The IP number of your (the visitor's)
machine.
- SCRIPT_NAME
- The name of the script running.
(/www26/web/someid/somefile)
- SERVER_SOFTWARE
- The name of the web server software
currently running.
- SERVER_NAME
- This machine's name, or rather, what
this machine thinks its name is.
- SERVER_PORT
- Standard http/web port.
- SERVER_PROTOCOL
- The name and version number of the
protocol running on this server. (HTTP/1.0)
(Note: if you are writing scripts or recipes
for use with procmail, you must use the HOME environment variable
in place of DOCUMENT_ROOT. CGI environment variables are not
available while running under procmail.)
|