我确实安装了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>
当我尝试使用终端运行脚本时,它工作正常,但通过浏览器,它永远不会显示正确的输出
谢谢
答案 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>