Part
Five
- CGI-bin
Applications
- Where to Put CGI-bin
Scripts
Paths to Date, Mail, Perl,
etc. Setting
Permissions Troubleshooting CGI-bin
Problems Permissions on scripts we
install Secure Server
CGI
- CGI-bin Scripts We Provide
by request:
Free-for-All Links
Page WWW
Board Merchant Cart
v1.4 Scripts
preconfigured:
Counter Clock Countdown Guestbook Random
Html Formmail Banner
Ads Setup Search Engine
Rebuild
Search Chat Room
CGI-bin ApplicationsCGI stands for "Common
Gateway Inferface," a fancy name meaning computer programs running on the
webserver that can be invoked from a www page at the browser. The "bin" part
alludes to the binary executables that result from compiled or assembled
programs. It is a bit misleading because cgi's can also be Unix shell scripts or
interpreted languages like Perl. CGI scripts need to be saved in ASCII format
and uploaded to your server's cgi-bin in ASCII or text format. This is very
important.
We don't provide
free support for CGI scripts which we did not install on your server. So if you
are not already familiar with CGI scripting, you may want to read a book on the
subject or find places on the Internet with CGI scripting information. There are
many good resources for CGI scripts found on the web. The scripts at Matt's
Script Archive found at http://www.worldwidemart.com/scripts/ are very good.
Many of our scripts come from here. Another excellent resource is The CGI
Resource Index found at http://www.cgi-perl.com/ -- if you are not an
expert, look for scripts that are very well documented and come with
step-by-step instructions, or contact us for help or
installation.
Where to Put CGI-bin Scripts
Put your cgi-bin
scripts in the public_html subdirectory named "cgi-bin".
Paths to Date, Mail, Perl, etc.
Here are your
paths to the common server resources that CGI scripts often
require:
| Sendmail: |
/usr/sbin/sendmail |
| Perl5.6: |
/usr/bin/perl |
| Date: |
/bin/date |
| Java: |
/usr/bin/java |
| Python: |
/usr/bin/python |
| Non web directory
path: |
/home/username |
| Web directory
path: |
/home/username/public_html (puts you in your web
directory) |
| Cgi-bin
path: |
/home/username/public_html/cgi-bin |
| Cgi Wrapper
path: |
/home/username/public_html/scgi-bin |
Setting Permissions
The following is a simple
explanation of file permissions in Unix. To list the access permissions of a
file or directory, telnet to your server, then:
cd directoryname
to change the directory
until you are either in the directory above the file you are interested in, or
above the directory you are checking.
Type: ls -l filename
and you will see what the
current permission settings are for that file, along with a bunch of other
stuff.
Examples of using
chmod:
| PEOPLE |
PERMISSIONS |
| u =
the file's user (you) |
r =
read access |
| g =
the file's group |
x =
execute access |
| o =
others |
w =
write access |
| a =
the user, the group, and others |
|
To change permissions for a
file named filename.cgi, you need to chmod the file (change mode). For example,
when you type this:
chmod u=rwx,g=rx,o=rx filename.cgi or chmod 755 filename.cgi
you've given: read, execute, and write access to the user (that's you)
read and execute access to the group and read and execute access to
others
Some scripts will tell you to chmod 755 (for example). Doing the above is the
same thing as typing chmod 755. You can use either method with our Unix servers.
Let me explain:
When using the numeric system, the code for permissions is as follows: r
= 4 w = 2 x = 1 rwx = 7
The first 7 of our chmod775 tells Unix to change the user's permissions to
rxw (because r=4 + w=2 + x=1 adds up to 7. The second 7 applies to the group,
and the last number 5, refers to others (4+1=5).
When doing an ls -l on the file, telnet always shows the permissions this
way: -rwxr-xr-x
Ignore the first dash, then break up the above into three groups of letters.
If there's a dash where a letter should be, it means that there is no permission
for those people.
Remember: the first 3 apply to user, the second 3 apply to group, and the
third 3 apply to others.
Some FTP clients support changing permissions in a more graphical way. If you
have Fetch for the Mac, you have an easy way to change permissions. Go to the
file you want to change the permissions on, and highlight it. Under the Remote
menu, select Change Permissions. A window will pop up showing the current
permissions for the file you had highlighted, as in Figure 3A below.
Click on the boxes to change permissions as needed.
Figure
3A
WS_FTP accomplishes the same
task as above. Just highlight the file you want to check, and right-click on it.
A menu will pop up, then select CHMOD. You will see the window below, as in
Figure 3B.
Figure
3B
Troubleshooting CGI-bin Problems
Below are
solutions to some of the more common CGI script problems, in question and answer
format. You will find a list of proper permission settings for the scripts we
provide at the end.
When I
activate my CGI program, I get back a page that says "Internal Server Error. The
server encountered an internal error or misconfiguration and was unable to
complete your request."
This is
generally caused by a problem within the script. Log in via Telnet and test your
script in local mode to get a better idea of what the problem is. To do this, go
into the directory in which your script is located, then execute the script. To
execute the script, you can do it by two ways:
1) Type "perl
myscript.pl" (Perl being the language interpreter in this
case).
2) Or simply
type "myscript.pl" alone, that will work if the first line is well written to
indicate the location of Perl.
The first one is
useful to see if there's any error IN your script. The second one is useful to
test if your "calling line" (the first line of the script) is okay, i.e. if you
entered the right location of Perl.
I am being
told "File Not Found," or "No Such File or
Directory."
Upload your Perl
or CGI script in ASCII mode, not binary mode.
When I
test my Perl script in local mode (by Telnet), I have the following error:
"Literal @domain now requires backslash at myscript.pl line 3, within string.
Execution of myscript.pl aborted due to compilation
errors."
This is caused
by a misinterpretation by Perl. You see, the "@" sign has a special meaning in
Perl; it identifies an array (a table of elements). Since it cannot find the
array named domain, it generates an error. You should place a backslash (\)
before the "@" symbol to tell Perl to see it as a regular symbol, as in an email
address.
I am
getting the message "POST not implemented."
You are probably
using the wrong reference for cgiemail. Use the reference
/cgi-bin/cgiemail/mail.txt. Another possibility is that you are pointing to a
cgi-bin script that you have not put in your cgi-bin directory. In general, this
message really means that the web server is not recognizing the cgi-bin script
you are calling as a program. It thinks it is a regular text
file.
It's
saying I don't have permission to access /
This error
message means that you are missing your index.htm file. Note that files that
start with a "." are hidden files. To see them, type ls -al. If you wish to FTP
this file in, go to the home/yourdomain directory.
Appendix
CGI-bin scripts we provide BY
REQUEST
Free-For-All Links PageFree For All Link Page
allows you to set up a web page which your users can then add links to in
specified categories. Newest links are added to the top of each category. A
running total of the number of links present as well as the time when the last
link was added is shown at the top of the page. Once configured your Free For
All Links page is located on your server at
http://www.yourdomain.com/links/links.htm. The only configuration you may want
to do is to customize the look of the links.htm page. Just leave the method and
input tags the way they are. If you decide to change the category names, you
must do so in the links.htm document, as well as the links.pl file in your
cgi-bin.
WWW BoardWWW Board is a threaded World Wide Web discussion
forum and message board, which allows users to post new messages, follow-up to
existing ones and more. Once configured it is located at
http://www.yourdomain.com/bbs , go there to post your
messages.
There are
several options you may want to configure. First of all, the index.sht file in
the bbs directory can be customized any way you wish as long as you leave the
method and input tags the way they are.
Additionally,
here are some options contained in the wwwboard.pl script itself (located in
your cgi-bin directory) which you may want to change, depending on your
needs:
$show_faq =
1;
This option
allows you to choose whether or not you want to display a link to the FAQ on
every individual message page or not. It defaults to 1 and the link will be put
in at the top of the message along with links to Followups, Post Followup and
Back to $title. Setting this to 0 will turn it off, and keeping it at 1 will
keep the link. You need to create a faq.html file and put it inside the bbs
directory. The FAQ can contain any information you want to give your visitors
about how the board works, your organization, types of postings that will be
allowed, etc.
$allow_html =
1;
This option lets
you choose whether or not you want to allow HTML mark-up in your posts. If you
do not want to allow it, then everything that a user submits that has <>'s
around it will be cut out of the message. Setting this option to 1 will allow
HTML in the posts and you can turn this option off by setting it to
0.
$quote_text =
1;
By keeping this
option set to 1, the previous message will be quoted in the followup text input
box. The quoted text will have a ':' placed in front of it so you can
distinguish what had been said in the previous posts from what the current
poster is trying to get across. Setting this option to 0 will leave the followup
text box empty for the new poster.
$subject_line
= 0;
There are three
options for the way that you can display the subject line for the user posting a
followup. Leaving this option at 0 which is the default value, will put the
previous subject line into the followup form and allow users to edit the subject
however they like. Setting this option to 1, however, will quote the subject,
but simply display it to the user, not allowing him or her to edit the subject
line. The third and final option can be achieved by setting the $subject_line
variable to 2. If it is set to 2, the subject will not be quoted and instead the
user will be prompted with an empty subject block in their followup subject
line.
$use_time =
1;
This option
allows you to choose whether or not you want to use the hour:minute:second time
with the day/month/year time on the main page. Day/Month/Year will automatically
be placed on the main wwwboard.html page when a new entry is added, but if you
leave this variable at 1, the hour:minute:second time will also be put there.
This is very useful for message boards that get a lot of posts, but if you would
like to save space on your main page, you can set this to 0, causing the
hour:minute:second display not to be
added. |