Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

how do i configure apache webserver to run perl scripts

by Anonymous Monk
on Apr 25, 2000 at 22:22 UTC ( #9060=categorized question: print w/replies, xml ) Need Help??
Contributed by Anonymous Monk on Apr 25, 2000 at 22:22 UTC
Q&A  > HTTP and FTP clients


I am trying to run my html which is calling a cgi script. After i hit submit i am getting a 404 error. if i run my perl script on the command line it runs fine.

Answer: how do i configure apache webserver to run perl scripts
contributed by btrott

A 404 error means that your CGI script wasn't found, which doesn't necessarily mean that Apache isn't configured to run CGI scripts.

You need to tell Apache two things:

  • that certain files (identified by file extension) are CGI scripts and should be executed.
  • where such scripts live.
A very easy way to do this is to use the ScriptAlias directive. It maps a URL path (like "/cgi-bin/foo.cgi") to a filesystem path (like "/home/httpd/cgi-bin/foo.cgi"). It also tells Apache that all files in that directory are CGI scripts and should be executed.

So, to configure your Apache for the above path configs, add this line to your httpd.conf:

ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
You may need to adjust the paths, but that should get you started.

It's in the Apache Docs.

If you don't have access to httpd.conf, you can use .htaccess files, but you can't use ScriptAlias. In that case you can use the AddType directive, which associates file extensions with mime types. More in the appropriate docs.

Answer: how do i configure apache webserver to run perl scripts
contributed by merlyn

See the mod_perl guide for many examples.

Answer: how do i configure apache webserver to run perl scripts
contributed by taint

Another thing to consider is simply telling Apache to consider .html files as being peppered with perl code:

AddOutputFilter Includes html
To use the above, you must also include Includes in the Options section of your httpd.conf file.
Options Indexes Includes etc...
This way, you may include perl modules, or bits of perl code you'd like to exec, much as you would with the more commonly used extension: .shtml. In fact you could invent any extension you like -- .perl5, for example.


Answer: how do i configure apache webserver to run perl scripts
contributed by dushyantvaghela

You'll need to take a look at your apache error log to see what the "internal server error" is. The four most likely cases (in my experience) would be:

The CGI program is in a directory which does not have CGI execution enabled.

Solution: Add the ExecCGI option to that directory via either httpd.conf or a .htaccess file.

Apache is only configured to run CGIs from a dedicated cgi-bin directory.

Solution: Move the CGI program there or add an AddHandler cgi-script .cgi statement to httpd.conf.

The CGI program is not set as executable.

Solution (assuming a *nix-type operating system): chmod +x my_prog.cgi

The CGI program is exiting without sending headers.

Solution: Run the program from the command line and verify that a) it actually runs rather than dying with a compile-time error and b) it generates the correct output, which should include, at the very minimum, a Content-Type header and a blank line following the last of its headers.

Please (register and) log in if you wish to add an answer

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others browsing the Monastery: (7)
    As of 2020-05-27 13:52 GMT
    Find Nodes?
      Voting Booth?
      If programming languages were movie genres, Perl would be:

      Results (155 votes). Check out past polls.