编辑:此问题被错误地标记为How can I troubleshoot my Perl CGI script?的副本,该问题涉及如何调试perl程序,答案解释了如何执行此操作。在这种情况下,我甚至没有达到这个目标,问题结果是一个apache配置问题,我在Directory指令中使用了相对路径,在这个问题的答案中没有提到这些问题
原始问题: 我已经设置了一个ubuntu测试服务器(16.04.2 LTS)并且正在尝试使用apache来执行perl cgi脚本。它从命令行运行良好,但在浏览器中它始终显示源代码。我在这个网站和其他网站上经历过很多页面的建议,但是我无法让它工作,所以任何帮助都会非常感激。
我的网站的conf文件看起来像这样(我希望能够按目录执行脚本):
<VirtualHost *:443>
DocumentRoot "/var/www/test"
ServerName mydomain.org
<Directory "/var/www/test">
allow from all
Options None
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/webmin/letsencrypt-cert.pem
SSLCertificateKeyFile /etc/webmin/letsencrypt-key.pem
SSLCACertificateFile /etc/webmin/letsencrypt-ca.pem
<Directory "path/to/dir">
Options ExecCGI Indexes
AddHandler cgi-script .pl
</Directory>
</VirtualHost>
我启用mods的目录如下所示:
access_compat.load autoindex.conf mime.conf setenvif.load
alias.conf autoindex.load mime.load socache_shmcb.load
alias.load cgi.load mpm_prefork.conf ssl.conf
auth_basic.load deflate.conf mpm_prefork.load ssl.load
authn_core.load deflate.load negotiation.conf status.conf
authn_file.load dir.conf negotiation.load status.load
authz_core.load dir.load php7.0.conf
authz_host.load env.load php7.0.load
authz_user.load filter.load setenvif.conf
error.log中没有错误,访问日志告诉我:
mydomain.org:443 xx.xxx.xxx.xx - - [27/Apr/2017:10:37:02 +0100] "GET /path/to/dir/test.pl HTTP/1.1" 304 3921 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
脚本(test.pl)就是这样,并且可以从命令行运行:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
有谁能告诉我这里我做错了什么?
答案 0 :(得分:0)
如果指令中没有非动态内容,只需添加ScriptAlias指令:
ScriptAlias /program_dir/ "/full/path/to/dir/"