http://httpd.apache.org/docs/howto/ssi.html#configuringyourservertopermitssi
for more information than I'm writing out...
You need to have (somewhere in the main configuration section) the
following:
#
# To use server-parsed HTML files
#
AddType text/html .shtml
AddHandler server-parsed .shtml
Then make the suffix of your files .shtml. You can do:
AddType text/html .shtml
AddHandler server-parsed .shtml .html .htm
to make all of your files be server-parsed. This can be a huge slowdown if
your site gets many hits.
You can take out the <Location /index.shtml> altogether. Also, in your
/cgi-bin alias, don't do "Options ExecCGI" even though that probably works
fine. You might be better off with the following:
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the
client.
# The same rules about trailing "/" apply to ScriptAlias directives as
to
# Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
One of the bad things about having a regular <Directory> setting without the
ScriptAlias, and just turning on Options ExecCGI is that the directory will
be browseable by default.
Meaning that I could just go to http://yourserver/cgi-bin and view all the
CGI's in your directory, and maybe (too tired to test) view their contents.
Make sure you put always put an ending "/" on your script alias definition.
-- Ryan
----- Original Message -----
From: "Ivica Bukvic" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, February 18, 2002 1:46 AM
Subject: Configuration problem -- HTML embeded cgi script calls not working
[using default MDK/Linux 8.1 (Apache 1.3)]
> Hi all,
>
> I am a self-taught Linux admin, working hard on patching my knowledge
> potholes. One of them is Apache/cgi/perl configuration.
>
> I am using Mandrake 8.1 on an Intel machine, that comes pre-installed
> with Apache 1.3.
>
> Default configuration file (/etc/httpd/conf/commonhttpd.conf) looks as
> follows (only the last part that pertains to this issue, I hope :-) ):
>
>
>
> # This should be changed to whatever you set DocumentRoot to.
> #
> <Directory /var/www/html>
>
> #
> # This may also be "None", "All", or any combination of "Indexes",
> # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
> #
> # Note that "MultiViews" must be named *explicitly* --- "Options All"
> # doesn't give it to you.
> #
> Options Indexes FollowSymLinks MultiViews
>
> #
> # This controls which options the .htaccess files in directories can
> # override. Can also be "All", or any combination of "Options",
> "FileInfo",
> # "AuthConfig", and "Limit"
> #
> AllowOverride All
>
> #
> # Controls who can get stuff from this server.
> #
> Order allow,deny
> Allow from all
> </Directory>
>
> <Directory /var/www/perl>
> AllowOverride All
> # Options Indexes FollowSymLinks MultiViews ExecCGI
> Options FollowSymLinks MultiViews ExecCGI
> Order allow,deny
> Allow from all
> </Directory>
>
> <Directory /var/www/cgi-bin>
> AllowOverride All
> Options Includes ExecCGI
> </Directory>
>
> <Directory /var/www/protected-cgi-bin>
> AllowOverride None
> Options ExecCGI
> Order deny,allow
> Deny from all
> Allow from 127.0.0.1
> #allow from .your_domain.com
> </Directory>
>
> #
> # Control access to UserDir directories. The following is an example
> # for a site where these directories are restricted to read-only.
> #
> #<Directory /home/*/public_html>
> # AllowOverride FileInfo AuthConfig Limit
> # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
> # <Limit GET POST OPTIONS PROPFIND>
> # Order allow,deny
> # Allow from all
> # </Limit>
> # <LimitExcept GET POST OPTIONS PROPFIND>
> # Order deny,allow
> # Deny from all
> # </LimitExcept>
> #</Directory>
>
> # These settings are pretty flexible, and allow for Frontpage and XSSI
> <Directory /Users/*/public_html>
> AllowOverride All
> Options MultiViews Indexes Includes FollowSymLinks
> Order allow,deny
> Allow from all
> </Directory>
>
> #<Directory /Users/*/public_html/cgi-bin>
> # AllowOverride All
> # Options ExecCGI
> # SetHandler cgi-script
> #</Directory>
>
>
> <IfModule mod_perl.c>
> <Directory /Users/*/public_html/cgi-bin>
> SetHandler perl-script
> PerlHandler Apache::PerlRun
> Options -Indexes ExecCGI
> PerlSendHeader On
> </Directory>
> </IfModule>
>
> <Directory /var/www/icons>
> Options Indexes MultiViews
> AllowOverride None
> Order allow,deny
> Allow from all
> </Directory>
>
> <Directory /usr/share/doc>
> Options Indexes FollowSymLinks
> Order deny,allow
> Deny from all
> Allow from 127.0.0.1
> #allow from .your_domain.com
> </Directory>
>
> <Location /index.shtml>
> Options +Includes
> </Location>
>
> <IfModule mod_perl.c>
> PerlModule Apache::Registry
>
> #set Apache::Registry Mode for /perl Alias
> <Location /perl/*.pl>
> SetHandler perl-script
> PerlHandler Apache::Registry
> Options -Indexes ExecCGI
> PerlSendHeader On
> </Location>
>
> #set Apache::PerlRun Mode for /cgi-perl Alias
> <Location /cgi-perl/*.pl>
> SetHandler perl-script
> PerlHandler Apache::PerlRun
> Options -Indexes ExecCGI
> PerlSendHeader On
> </Location>
> </IfModule>
>
>
>
> Now, there are several issues that I am trying to figure out:
>
> My Cgi dirs (both the system one in /var/www/cgi-bin/ and individual
> user ones in /home/~username/public_html/cgi-bin/ ) do work if I call a
> cgi script directly from an url (i.e. http://foo.com/cgi-bin/bar.cgi).
>
> The problem is when I want to use a cgi script within an html file, no
> matter where I store the html file (obviously default preference being
> in my user's public_html folder), the <--#exec ... --> calls, or any
> other call of such type contained within an Html file, is simply
> ignored.
>
> I tried fiddling with configuration, but am lacking in-depth knowledge
> of all the different settings (I do understand that I do need to have
> Options and Includes in the folders where I need to be able to have html
> files with embeded cgi calls -- please correct me if I am wrong). Also,
> I am not quite sure what is the difference between, for instance
> +Includes -Includes, and just simply Includes (my understanding from all
> of the doc searching is that the first two add/subtract from the default
> settings possibly stored in the folder's .htaccess, while the third one
> explicitly adds this functionality?).
>
> Searching over the net for the solution has resulted in a frustratingly
> wasted weekend. So, I am hoping that someone would be kind enough to
> help me figure this issue out.
>
> Even the calls like:
>
> <!--#echo var="DATE_LOCAL" -->
> (not sure if this still falls into the mod_perl category tho)
>
> and
>
> <!--#exec cmd="/usr/ucb/finger $REMOTE_USER@$REMOTE_HOST"-->
> (yet another copy/paste thing that I put into my html file to see if the
> whole thing works at all)
>
> do not work whatsoever.
>
> The other issue I would greatly appreciate to have clarified is the
> whole question as to how to retrieve more info regarding the dreaded 500
> error when executing cgi scripts, when apache's error_log is too skimpy
> with info to give anything valuable (it simply says 500 premature end of
> script, which can be a ton of things), and when the script executes just
> fine at the command-line (i.e. #\perl file.cgi)?
>
> I would greatly appreciate any help I can get. Thank you very much!
> Sincerely,
>
> Ico
>
>