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:
<tt># Path to your guestbook file
$guestbook =
"/www23/web/examp9/data/guest.html";</tt>
You should change it to: <tt># Path to
your guestbook file $guestbook = "$ENV{DOCUMENT_ROOT}/data/guest.html";</tt>
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.)
|