Perl脚本在linux mint中显示为纯文本?

时间:2013-06-04 15:34:23

标签: perl apache cgi

我确实安装了libapache2-mod-perl2来通过apache来运行perl文件作为CGI 每次我尝试浏览perl文件时,浏览器都会将其显示为纯文本。

###Start###
#!/usr/bin/perl -w
print "Content-type: text/html\r\n\r\n";
print "Hello there";
###End###

这是虚拟主机文件

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/test
    ServerName  perl.dev
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /var/www/test/cgi-bin
    <Directory "/var/www/test/cgi-bin">
        AddHandler cgi-script .cgi .pl
        Options FollowSymLinks +ExecCGI
        AllowOverride none
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

当我尝试使用终端运行脚本时,它工作正常,但通过浏览器,它永远不会显示正确的输出
谢谢

1 个答案:

答案 0 :(得分:0)

您提到“ libapache2-mod-perl2”,因此您正在使用mod_perl。

对于mod_perl,您必须使用SetHandler perl脚本。

我在常规cgi和mod-perl之间有所作为。这就是我在apache2中配置mod-perl的方法:

ScriptAlias /perl-bin/ /usr/lib/perl-bin/
<Directory "/usr/lib/perl-bin">
       AllowOverride None
       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

       SetHandler perl-script
       PerlResponseHandler ModPerl::Registry
       PerlOptions +ParseHeaders
       #Order allow,deny
       #Allow from all
       Require ip 127.0.0.1 192.168.0.0/16
</Directory>