Jeff, I think there are two questions here,
1.. What version of PERL is installed
2.. What web server is being used? Apache? IIS? or something else?
normally NT/W2K does not even read the shebang, but the file extension .pl is
registered to the perl executable and so if the script is invoked correctly it will
execute.
The error message that was originally provided seemed to indicate that the script did
not have the appropriate permissions, rather than the interpreter being unlocatable.
John
At 01:01 PM 6/24/2002 -0400, Jeff Seger wrote:
>Are you certain that you have the correct path to the perl executable?
>
>Try changing your shebang line to:
>#!perl
>and see if they are then executable.
>
>
>
>On Mon, 2002-06-24 at 11:52, John Day wrote:
>> 1.. Have you made the scripts executable? by using CHMOD 755 or something similar.
>You can often do this in your ftp client.
>>
>> 2.. Who is your provider, so we may all studiously avoid them in the future?
>>
>>
>> John Day
>> Words & Images
>> Toronto, Canada
>>
>>
>>
>> At 11:07 AM 6/24/2002 -0400, Nick Hoffman [UWO] wrote:
>> >Hi. The hosting company that I am with says that you only need "execute for
>> >scripts" permissions to run Perl scripts in my cgi-bin directory. However,
>> >I'm unable to run *any* of my scripts. Might anyone know why that may be?
>> >Whenever I try to, I get a 403.1 Forbidden: Execute Access Forbidden. The
>> >hosting company refuses to tell me how to get my scripts working, and cling
>> >to this motto "We provide accessibility, not functionality." So, I have no
>> >idea how to get my scripts going. Below is one of my many scripts that
>> >simply won't run.
>> >
>> >Thanks for your help
>> > Nick Hoffman
>> >
>> >
>> >
>> >#!perl\perl.exe
>> >
>> >use DBI;
>> >use strict;
>> >use CGI::Carp qw(fatalsToBrowser);
>> >
>> >#data source name
>> >my ($dsn) = "DBI:ODBC:ebahoops";
>> >
>> >#for holding the username and password that the user entered
>> >my (@username, @password);
>> >
>> >#for holding the usernameS and passwordS in the pwd file
>> >my (@unames, @pwds);
>> >
>> >#whether the username and password exist AND match
>> >my ($match) = "false";
>> >
>> >#file that holds the different EBA divisions
>> >my ($DivisionsFile) = "divisions.dat";
>> >my (@division_contents);
>> >
>> >#path to pwd file
>> >my ($pwd_file) = "dont_delete.dat";
>> >
>> >#for converting query string
>> >my ($NameValue, $Name, $Value);
>> >
>> >#array for holding query data
>> >my (@data);
>> >
>> >#database and statement handles
>> >my ($dbh);
>> >my ($sth);
>> >
>> >#array for holding team names and numbers
>> >my (@COEDTeamNames, @COEDTeamNums, @COEDDivisions);
>> >my (@BoysTeamNames, @BoysTeamNums, @BoysDivisions);
>> >my (@GirlsTeamNames, @GirlsTeamNums, @GirlsDivisions);
>> >
>> >#temp vars
>> >my (@temp, @params, $counter, $temp);
>> >
>> >#put each param into the array
>> >@params = split("&", $ENV {'QUERY_STRING'});
>> >
>> >#convert ugly chars to regular chars
>> >$counter = 0;
>> >while (@params[$counter])
>> > {
>> > ($Name, $Value) = split("=", @params[$counter]);
>> > $Value =~ tr/+/ /;
>> > $Value =~ s/%([\dA-Fa-f][\dA-Fa-f])/ pack ("C", hex($1))/eg;
>> > @params[$counter] = $Name . "=" . $Value;
>> >
>> > $counter++;
>> > }
>> >
>> >print <<HTMLSTUFF;
>> > <html>
>> > <head>
>> >
>> > <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
>> > <meta name="description" content="The Official Etobicoke Basketball
>> >Association's Web Page">
>> > <meta name="keywords" content="EBA, Etobicoke Basketball Association,
>> >Basketball, League, BBall, Ball, Sport, Sports, fun, games, activity,
>> >activities, net">
>> >
>> > <title>Etobicoke Basketball Association - Registration Form</title>
>> > </head>
>> >
>> > <body bgcolor="#FFFFFF" link="#FF0000" vlink="#FF0000" alink="#FF0000">
>> >
>> > <table border=0 cellpadding=0 cellspacing=0 width=600>
>> > <tr>
>> > <td valign="top" width="600">
>> > <table border=0 cellpadding=0 cellspacing=0 width=100%>
>> > <tr>
>> > <td colspan=2>
>> > <center>
>> > <table border=3 cellpadding=10
>cellspacing=0>
>> > <tr>
>> > <td>
>> > <center>
>> > <b>ETOBICOKE
>BASKETBALL ASSOCIATION</b><br>
>> > <b>Administration
>Page</b>
>> > </center>
>> > </td>
>> > </tr>
>> > </table>
>> > </center>
>> > </td>
>> > </tr>
>> > <tr>
>> > <td width=70%> </td>
>> > <td width=30%> </td>
>> > </tr>
>> >HTMLSTUFF
>> >;
>> >
>> >if ((@params[0] !~ "username=") || (@params[1] !~ "password="))
>> > { #if the username or password isn't specified, ask for it
>> > print "
>> > <form action=\"edit_teams.pl\"
>method=\"get\">
>> > <tr>
>> > <td width=70%>Username:</td>
>> > <td width=30%><input type=text size=12 maxlength=12
>> >name=username></td>
>> > </tr>
>> > <tr>
>> > <td width=70%>Password</td>
>> > <td width=30%><input type=password size=12
>maxlength=12
>> >name=password></td>
>> > </tr>
>> > <tr>
>> > <td width=70%> </td>
>> > <td width=30%> </td>
>> > </tr>
>> > <tr>
>> > <td colspan=2><center><input type=submit
>value=\"Submit\"
>> >STYLE=\"background:AD5100\"><center></td>
>> > </form>
>> > </tr>
>> > </table>
>> > ";
>> > }
>> >else
>> > {
>> > #split up the username
>> > @username = split("=", @params[0]);
>> > @password = split("=", @params[1]);
>> >
>> > #encrypt the password
>> > @password[2] = crypt(@password[1], "fish");
>> >
>> > #grab the usernames and passwords from the pwd file
>> > open (pwd, $pwd_file) || die print "Error while opening pwd file for
>> >reading:<br>$!<br>";
>> > @temp = <pwd>;
>> > close pwd;
>> >
>> > #build the uname and pwd arrays
>> > $counter = 0;
>> > while ((@temp[$counter]) && ($match eq "false"))
>> > {
>> > (@unames[$counter], @pwds[$counter]) = split (",",
>@temp[$counter]);
>> >
>> > #get rid of the end-of-line char from the pwd
>> > chomp(@pwds[$counter]);
>> >
>> > if ((@username[1] eq @unames[$counter]) && (@password[2] eq
>> >@pwds[$counter]))
>> > {$match = "true";}
>> >
>> > $counter++;
>> > }
>> >
>> > if ($match eq "false")
>> > {
>> > print "
>> > <tr>
>> > <td colspan=2>
>> > <b><font color=red><center>
>> > ERROR: the username and password do not
>match
>> > </center></font></b>
>> > </td>
>> > </tr>
>> > </table>
>> > ";
>> > }
>> > else #the username and password match
>> > {
>> > if (@username[1] eq "admin")
>> > {
>> > print "
>> > <tr><td width=100%><b><font size=+1>Team
>Editing</font></b></td></tr>
>> > <tr><td width=100%><font size=-1>You are logged in
>as the
>> >administrator.</font></td></tr>
>> > <tr><td width=100%> </td></tr>
>> > <tr><td width=100%>
>> > ";
>> >
>> > #get all of the existing teams
>> >
>> > #***Connect to the database***
>> > $dbh = DBI->connect($dsn, "", "") || die print
>"$DBI::errstr<hr>";
>> >
>> > #***Extract the teams from the database
>> > $sth = $dbh->prepare("SELECT TeamNum, TeamName, Division
>FROM Teams WHERE
>> >Gender=? ORDER BY Gender, Division, TeamName") || die print "Died while
>> >preparing:<br>$DBI::errstr<hr>";
>> >
>> > #execute for CO-ED and retrieve the data
>> > $sth->execute('CO-ED') || die print "Died while
>> >executing:<br>$DBI::errstr<hr>";
>> > $counter = 0;
>> > while (@data = $sth->fetchrow_array())
>> > {
>> > @COEDTeamNums[$counter] = @data[0];
>> > @COEDTeamNames[$counter] = @data[1];
>> > @COEDDivisions[$counter] = @data[2];
>> > $counter++;
>> > }
>> >
>> > #execute for Boys and retrieve the data
>> > $sth->execute('Boys') || die print "Died while
>> >executing:<br>$DBI::errstr<hr>";
>> > $counter = 0;
>> > while (@data = $sth->fetchrow_array())
>> > {
>> > @BoysTeamNums[$counter] = @data[0];
>> > @BoysTeamNames[$counter] = @data[1];
>> > @BoysDivisions[$counter] = @data[2];
>> > $counter++;
>> > }
>> >
>> > #execute for Girls and retrieve the data
>> > $sth->execute('Girls') || die print "Died while
>> >executing:<br>$DBI::errstr<hr>";
>> > $counter = 0;
>> > while (@data = $sth->fetchrow_array())
>> > {
>> > @GirlsTeamNums[$counter] = @data[0];
>> > @GirlsTeamNames[$counter] = @data[1];
>> > @GirlsDivisions[$counter] = @data[2];
>> > $counter++;
>> > }
>> >
>> > if ((@COEDTeamNums == 0) && (@BoysTeamNums == 0) &&
>(@GirlsTeamNums ==
>> >0)) #no teams currently exist
>> > { #make sure at least 1 team exists
>> > print "
>> > No teams currently exist.<p>
>> > <table border=0 cellpadding=4
>cellspacing=0 width=100%>
>> > ";
>> > }
>> > else
>> > { #at least 1 team exists, so let's display them
>> > print "
>> > <table border=0 cellpadding=4
>cellspacing=20 width=100%>
>> > <tr>
>> > <td
>bgcolor=AD5200><b>CO-ED</b></td>
>> > <td
>bgcolor=AD5200><b>Boys</b></td>
>> > <td
>bgcolor=AD5200><b>Girls</b></td>
>> > </tr>
>> > <tr>
>> > <td bgcolor=AD5200
>valign=top>
>> > <table border=0
>cellpadding=4 cellspacing=0>
>> > <tr>
>> >
><td bgcolor=AD5200 width=50%><b>Name</b></td>
>> >
><td bgcolor=AD5200 width=50%><b>Division</b></td>
>> > </tr>
>> > ";
>> >
>> > $counter = 0;
>> > while (@COEDTeamNums[$counter])
>> > {
>> > print " <tr>
>> > <td
>bgcolor=AD6200 width=50%>@COEDTeamNames[$counter]</td>
>> > <td
>bgcolor=AD6200 width=50%>@COEDDivisions[$counter]</td>
>> > </tr>";
>> > $counter++;
>> > } #end while
>> > print " </table>
>> > </td>
>> > <td bgcolor=AD5200
>valign=top>
>> > <table border=0
>cellpadding=4 cellspacing=0>
>> > <tr>
>> >
><td bgcolor=AD5200><b>Name</b></td>
>> >
><td bgcolor=AD5200><b>Division</b></td>
>> > </tr>
>> > ";
>> >
>> > $counter = 0;
>> > while (@BoysTeamNums[$counter])
>> > {
>> > print " <tr>
>> > <td
>bgcolor=AD6200>@BoysTeamNames[$counter]</td>
>> > <td
>bgcolor=AD6200>@BoysDivisions[$counter]</td>
>> > </tr>";
>> > $counter++;
>> > } #end while
>> >
>> > print " </table>
>> > </td>
>> > <td bgcolor=AD5200
>valign=top>
>> > <table border=0
>cellpadding=4 cellspacing=0>
>> > <tr>
>> >
><td bgcolor=AD5200><b>Name</b></td>
>> >
><td bgcolor=AD5200><b>Division</b></td>
>> > </tr>
>> > ";
>> >
>> > $counter = 0;
>> > while (@GirlsTeamNums[$counter])
>> > {
>> > print " <tr>
>> > <td
>bgcolor=AD6200>@GirlsTeamNames[$counter]</td>
>> > <td
>bgcolor=AD6200>@GirlsDivisions[$counter]</td>
>> > </tr>";
>> > $counter++;
>> > } #end while
>> >
>> > print " </table>
>> > </td>
>> > </tr>
>> > </table>
>> > </td>
>> > </tr>
>> > ";
>> >
>> > print "
>> > <tr>
>> > <td> </td>
>> > <td> </td>
>> > </tr>
>> > <tr>
>> > <td> </td>
>> > <td> </td>
>> > </tr>
>> > <tr>
>> > <td colspan=2>
>> > <table border=0 cellpadding=4
>cellspacing=0 width=100%>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200>
>> > <form
>action=\"rename_a_team.pl\" method=\"get\">
>> > <input
>type=hidden name=username value=@username[1]>
>> > <input
>type=hidden name=password value=@password[1]>
>> >
>> > <b>Rename
>A Team</b>
>> > </td>
>> > <td width=40%
>bgcolor=AD5200> </td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Current Team
>> >Name:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=50
>> >name=CurrentTeamName></td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> New Team
>> >Name:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=50
>> >name=NewTeamName></td>
>> > <td width=20%
>bgcolor=AD5200><input type=submit
>> >value=\"Submit\"></td>
>> > </form>
>> > </tr>
>> > <tr>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD6200>
>> > <form
>action=\"delete_a_team.pl\" method=\"get\">
>> > <input
>type=hidden name=username value=@username[1]>
>> > <input
>type=hidden name=password value=@password[1]>
>> >
>> > <b>Delete
>A Team</b>
>> > </td>
>> > <td width=40%
>bgcolor=AD6200> </td>
>> > <td width=20%
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD6200> Team Name:</td>
>> > <td width=40%
>bgcolor=AD6200><input type=text size=20 maxlength=50
>> >name=TeamName></td>
>> > <td width=20%
>bgcolor=AD6200><input type=submit
>> >value=\"Submit\"></td>
>> > </form>
>> > </tr>
>> > <tr>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200>
>> > <form
>action=\"add_a_game.pl\" method=\"get\">
>> > <input
>type=hidden name=username value=@username[1]>
>> > <input
>type=hidden name=password value=@password[1]>
>> >
>> > <b>Add A
>Game</b>
>> > </td>
>> > <td width=40%
>bgcolor=AD5200> </td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Team Name:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=50
>> >name=Team1Name></td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Team Name:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=50
>> >name=Team2Name></td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Date
>> >(DD/MM/YY):</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=8
>> >name=Date></td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Time:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=20
>> >name=Time></td>
>> > <td width=20%
>bgcolor=AD5200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD5200> Location:</td>
>> > <td width=40%
>bgcolor=AD5200><input type=text size=20 maxlength=255
>> >name=Location></td>
>> > <td width=20%
>bgcolor=AD5200><input type=submit
>> >value=\"Submit\"></td>
>> > </form>
>> > </tr>
>> > <tr>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > <td
>bgcolor=AD5200> </td>
>> > </tr>
>> > ";
>> > } #end else: there's at least 1 team
>> >
>> > print "
>> > <tr>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > <td
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD6200>
>> > <form
>action=\"add_a_team.pl\" method=\"get\">
>> > <input
>type=hidden name=username value=@username[1]>
>> > <input
>type=hidden name=password value=@password[1]>
>> >
>> > <b>Add A
>Team</b>
>> > </td>
>> > <td width=40%
>bgcolor=AD6200> </td>
>> > <td width=20%
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD6200> New Team's
>> >Name:</td>
>> > <td width=40%
>bgcolor=AD6200><input type=text size=20 maxlength=50
>> >name=NewTeamName></td>
>> > <td width=20%
>bgcolor=AD6200> </td>
>> > </tr>
>> > <tr>
>> > <td width=40%
>bgcolor=AD6200> New Team's
>> >Division:</td>
>> > <td width=40%
>bgcolor=AD6200>
>> > ";
>> >
>> > #print the divisions, but without the cost
>> > open (divisions, $DivisionsFile) || die print "Error while
>opening
>> >divisions file for reading:<br>$!<br>";
>> > @division_contents = <divisions>;
>> > close divisions;
>> >
>> > chomp (@division_contents);
>> >
>> > foreach $_ (@division_contents)
>> > {
>> > #only grab entries that start with C, B or G
>> > #this gets rid of the "--Select--" and "- - - - -
>-" entries
>> > if (/select /)
>> > {print "$_\n";}
>> > elsif (/select_one/)
>> > {}
>> > else #it's an <option> that we want
>> > {
>> > /(<.*?>.*):.*(<.*?>)/;
>> >
>> > print "\t\t\t\t\t$1$2\n";
>> > }
>> > }
>> >
>> > print "
>> > </select>
>> > </td>
>> > <td
>bgcolor=AD6200><input type=submit value=\"Submit\"></form></td>
>> > </table>
>> > </td>
>> > </tr>
>> > ";
>> >
>> > $dbh->disconnect();
>> > } #end if username == "admin"
>> > else
>> > {
>> > print "
>> > <tr>
>> > <td colspan=2>
>> > <b><font color=red><center>
>> > ERROR: you are not allowed access
>to this page
>> > </center></font></b>
>> > </td>
>> > </tr>
>> > </table>
>> > ";
>> > }
>> > }
>> > } #end else
>> >
>> >print <<HTMLSTUFF;
>> > <tr>
>> > <td colspan=2>
>> > <p>
>> > <form action="edit_teams.pl"
>method="get">
>> > <input type=hidden
>name=username value=@username[1]>
>> > <input type=hidden
>name=password value=@password[1]>
>> > <input type="Submit"
>value="Reload Page">
>> > </form>
>> > </td>
>> > </tr>
>> > </td>
>> > </tr>
>> > </table>
>> > </body>
>> > </html>
>> >
>> >HTMLSTUFF
>> >;
>>
