简体   繁体   中英

Apache2 Ubuntu getting a cgi program to run 403 error from /usr/lib/cgi-bin

Well its 2022 and httpf.conf no longer exists. its seems to be split up into site-available, and conf-available, I can't figure it out and I can't find any instructions on how to get a simple helloworld perl script to run (in runs fine from the command line" "perl hw.pl")

The index.html page works fine in firefox, and by changing the 000-default.conf I was able to at least get the script "localhost/cgi-bin/hw.pl" to change from a 404 error to a 403 error by adding the section as marked:

leslie@jl-vr0sr4:/etc/apache2/sites-available$ pwd
/etc/apache2/sites-available
jleslie@jl-vr0sr4:/etc/apache2/sites-available$ cat 000-default.conf 
<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".



        # JL:: 221116  uncomment out the include to allow cgi-bin

    # Include conf-available/serve-cgi-bin.conf

        #JL:: 221116 did nothing.  Lets add the below: 


        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        AddHandler cgi-script .pl
        </Directory>
        
        #JL:: 221116 ok, that changed the 404 not found error
        #     to a 403 forbidden error what gives?
           # Forbidden
           # 
           # You don't have permission to access this resource.
           # Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80


</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet


So how do I now get it to actually run?

Did I do anything make a mistake in my conf file?

I also want to be able to run.exe.cgi and.sh files from /cgi-bin/ how do specify them as well?

Here is the test hello worl perl script I tried to run:

jleslie@jl-vr0sr4:/usr/lib/cgi-bin$ ll
/usr/lib/cgi-bin
total 44
drwxr-xr-x   2 root    root     4096 Nov 16 09:17 ./
drwxrwxrwx 115 root    root     4096 Nov 14 13:07 ../
-rwxrwxrwx   1 jleslie jleslie 30144 Nov 16 08:51 fh_fe.exe*
-rwxr-xr-x   1 root    root       76 Nov 16 09:17 hw.pl*
jleslie@jl-vr0sr4:/usr/lib/cgi-bin$ cat hw.pl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
jleslie@jl-vr0sr4:/usr/lib/cgi-bin$ 


OK, I finally figured it out. No thanks to the apache folks who keep changing the rules and fail to document properly how do do the most basic:

  1. start an apache server
  2. set up a cgi-bin directory.

They'll gladly spend pages talking about virtual hosts, and double nested hyper-crayon whatevers, but not the most basic setup: a webserver that can run cgi-bin programs. Unbelievable. /end gripe.

Anyway I edited:

/etc/apache2/sites-available/000-default.conf

with this code, to both fix and document what is necessary:

 31         # JL:: 221116  uncomment out the include to allow cgi-bin
 32 
 33         # Include conf-available/serve-cgi-bin.conf
 34 
 35         #JL:: 221116 did nothing.  Lets add the below: 
 36 
 37 
 38         #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 39         #<Directory "/usr/lib/cgi-bin">
 40         ScriptAlias /cgi-bin/ /var/www/cgi-bin/
 41         <Directory "/var/www/cgi-bin">
 42         AllowOverride None
 43         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 44         Order allow,deny
 45         Allow from all
 46         AddHandler cgi-script .pl .exe .cgi .sh
 47         </Directory>
 48 
 49         #JL:: 221116 ok, that changed the 404 not found error
 50         #     to a 403 forbidden error what gives?
 51            # Forbidden
 52            # 
 53            # You don't have permission to access this resource.
 54            # Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80
 55 
 56        # here is the fix. run this at the command line: 
 57 
 58        ### RUNME ****> cd /etc/apache2/mods-enabled
 59        ### RUNME ****> sudo ln -s ../mods-available/cgi.load
 60 
 61 
 62 </VirtualHost>
 63 

Here is the complete history (with my mistakes, don't bother with them,) of the session that fixed the issue:

 1807  cd /etc/apache2/sites-available/
 1808  vi 000-default.conf 
 1809  sudo systemctl stop apache2
 1810  sudo systemctl start apache2
 1811  cd ..
 1812  cd conf-available/
 1813  ll
 1814  vi serve-cgi-bin.conf 
 1815  cd ../sites-available/
 1816  ll
 1817  vi 000-default.conf 
 1818  pwd
 1819  cd /etc/apache2/mods-enabled
 1820  sudo ln -s ../mods-available/cgi.load
 1821  ll
 1822  sudo systemctl stop apache2
 1823  sudo systemctl start apache2

please note in the documentation the double secret "turn on cgi-bin" by making the soft link. It took me over an hour of searching on the inte.net to find that one. - J

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM