我正在Ubuntu下运行Apache/PHP。
当我通过访问http://localhost/mycgi.cgi
来运行 .cgi 文件时,浏览器会显示代码而不是运行它。
我该如何让浏览器执行CGI文件而不是显示其内容?
将以下这些行添加到您的apache2.conf文件中
<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>
AddHandler cgi-script .cgi .pl
cgi-bin
目录是不够的。自己做个好事,去读一下教程吧。他们在那里解释得非常清楚。 - eckes确保您的 .cgi 或 .pl 文件中的 shebang 行是正确的。Shebang 行告诉 Apache Perl 解释器的位置(Perl 解释器是 perl.exe 文件)。
Apache 教程如下:
你的第一个 CGI 程序 以下是一个打印一行到浏览器的示例 CGI 程序。输入以下内容,将其保存为名为 first.pl 的文件,并将其放在您的 cgi-bin 目录中。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World.";
因此,这里的 shebang 行是 #!/usr/bin/perl
然而,如果 perl.exe 位于不同的文件夹中,则需要更改 #!/usr/bin/perl
!即使是 Windows 用户,通常也可以完全忽略和省略 shebang 行。 (为什么教程没有提到这一点,我不知道 - 我猜他们没有意识到有些人总是忽略 shebang 行?)
例如,当我安装 Perl 时,自动建议我将 Perl 安装在 C:\Program Files (x86)\Perl64
中,在我的 Perl64 文件夹中有一个名为“bin”的文件夹,里面有 perl.exe。
所以我不得不将shebang行更改为:#!C:/Program Files (x86)/Perl64/bin/perl.exe
,然后才能让Apache与cgi脚本一起工作。
这个问题困扰了我在亚马逊Ubuntu 14.04上。我有一个配置已经“工作”了几年:
sudo a2enmod cgi
sudo service apache2 restart
我已经解决了一些现有的扩展名为.cgi的Perl脚本和现有虚拟主机配置的问题。还有一个错误(与此升级相关,但不是这个问题):
virtual.host
需要成为
virtual.host.conf
在它被认为是有效的之前。