如何在apache服务器上运行cgi脚本

Ram*_*Ram 3 apache perl cgi

这是我的计划:

[root@localhost cgi-bin]# locate first.pl 
/home/Ram/Desktop/work/first.pl
/usr/local/apache2/cgi-bin/first.pl
[root@localhost cgi-bin]# cd /usr/local/apache2/cgi-bin/
[root@localhost cgi-bin]# vi first.pl 
#!/usr/bin/perl -w
use warnings;
use warnings;
use CGI;
print "content-type: text/html\n\n";
print "<h2>Hello, World!</h2>\n";
Run Code Online (Sandbox Code Playgroud)

我从我的浏览器调用脚本,如下所示:

HTTP://localhost/usr/local/apache2/cgi-bin/first.pl

我没有得到输出,但我收到一个错误:

未找到

在此服务器上找不到请求的URL /usr/local/apache2/cgi-bin/first.pl.

位于localhost端口80的Apache/2.2.15(CentOS)服务器

我在Web浏览器中检查了Apache Web服务器是否正常工作:

https://开头本地主机

我们展示欢迎页面.

我该如何解决这个错误?

Chi*_*gde 6

在linux上安装apache2后,你基本上需要更改两个文件.

转到终端并设置以下配置:

  1. sudo vim /etc/apache2/sites-enabled/000-default.conf 并添加以下内容:

    <Files ~ "\.(pl|cgi)$">
        SetHandler perl-script
        PerlResponseHandler ModPerl::PerlRun
        Options +ExecCGI
        PerlSendHeader On
    </Files>
    
    Run Code Online (Sandbox Code Playgroud)
  2. sudo vim /etc/apache2/apache2.conf 并添加以下内容:

    <Directory /var/www/cgi-bin/> AddHandler cgi-script .cgi .pl Options FollowSymLinks ExecCGI AllowOverride None </Directory>

添加这两个配置更改后,编写一个perl脚本,将其放在cgi-bin目录中,然后赋予它足够的权限(sudo chmod 755 <filename>)

最后,重启apache2: sudo apache2ctl restart

截图: default.conf apache2.conf


小智 5

是的,上述过程有效,但简单的方法是:

  1. 启用 CGI- sudo a2enmod cgi
  2. 重新启动 Apache,它可以工作 -service apache2 restart
  3. 运行 cgi 文件http://localhost/cgi-bin/1.sh

祝你好运!!