Perl Apache:Perl脚本显示为纯文本

msi*_*nfo 16 apache perl configuration cgi windows-7

使用apache和配置时perl cgi scripts,不知道为什么index.cgi/ index.pl显示为纯文本而不是执行它们.当我放入http://localhost浏览器时,它显示在代码下面,而不是执行它.

List item
    #!C:/Dwimperl/perl/bin/perl.exe -w

     print "Content-type: text/html\n\n";
        print <<HTML;
        <html>
        <head>
        <title>A perl web page</title>
        </head>
        <body>
        <h3>A hello world form perl</h3>
        </body>

        HTML
        exit;
Run Code Online (Sandbox Code Playgroud)

这是httpd.conf我大部分时间编辑的文件的一部分(阅读各种在线参考,教程后)

# This should be changed to whatever you set DocumentRoot to.
<Directory "D:\webserver">

Listen 80
ServerName localhost:80
LoadModule cgi_module modules/mod_cgi.so

# First, we configure the "default" to be a very restrictive set of 
# features.  
<Directory />
    Options FollowSymLinks +ExecCGI
    AllowOverride None
</Directory>

DirectoryIndex index.html index.html.var index.cgi index.pl

AccessFileName .htaccess

# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi .pl

ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"
Run Code Online (Sandbox Code Playgroud)

小智 29

当浏览器打印脚本代码时,意味着它无法找到运行脚本的应用程序.下面两行应该是解决这个问题的第一步.AddHandler将确保文件以cgi脚本结尾.cgi并被.pl视为cgi脚本.而+ExecCGI选项将允许执行脚本.还要确保您的脚本指向正确的perl二进制位置.

    AddHandler cgi-script .cgi .pl
    Options FollowSymLinks +ExecCGI
Run Code Online (Sandbox Code Playgroud)

httpd.conf中也存在一些错误/错误配置点

  • 别名行应指向存在cgi脚本的cgi-bin目录.

ScriptAlias/cgi-bin /"D:\ webserver\cgi-bin"

  • 对于相同的cgi-bin目录,配置应该在httpd.conf.你应该<Directory "D:\webserver">用下面的部分替换你的部分.
<Directory "D:\webserver\cgi-bin" />
    AddHandler cgi-script .cgi .pl
    Options FollowSymLinks +ExecCGI
    AllowOverride None  
</Directory>
Run Code Online (Sandbox Code Playgroud)
  • 尝试从命令行运行您的cgi脚本,如下所示.它应首先从命令行打印或运行.

perl test.cgi

  • 确保您对cgi-bin目录和cgi脚本具有读写递归权限.您还可以使用写权限创建目录或文件.如果没有cgi-bin在其他可以拥有写权限的地方创建一个目录,而是提供其路径aliasdirectory属性httpd.conf.
  • 每次遇到apache conf问题时,请检查apache错误日志以获取确切的错误消息.它可以让您很好地了解问题.

另外这个链接应该帮助你.

(额外的评论,不是原来的回答者:你可能还需要启用该cgi模块.对我来说,让cgi在全新安装的Apache 2上工作的最后一步是sudo a2enmod cgi.在我这样做之前,网站只是向我展示了脚本的内容.)

sudo a2enmod cgi

  • `sudo a2enmod cgi`使用Raspberry Pi为我做了诀窍,如果重要的话. (3认同)