我只是安装Ubuntu 13.10而我正在尝试安装Apache。但是当我尝试在cgi-bin中运行perl文件时,浏览器只显示纯文本。
Apache的default.conf如下:
AddHandler cgi-script .cgi .pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
#Order allow,deny
Require all granted
Allow from all
</Directory>
这是我的perl cgi文件:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> PERL CGI</title>\n";
print "<body>";
print "hello perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
我在mime.conf中打开了Handler文件在/ usr / lib / cgi-bin中,我将其作为http而不是file:///运行。我还安装了mod_perl。 我是Apache新手。我搜索了几个小时,尝试无限的Apache配置,阅读Apache文档,但仍然无法解决它。是因为&#34; + ExecCGI&#34;代码有问题吗?我看到另一个人在将Ubuntu 12.04更新到13.10之后也遇到了类似的问题。也许Ubuntu是问题? 请帮忙。 Apache配置和Ubuntu权限几乎让我很生气。
答案 0 :(得分:45)
尝试使用此命令:
sudo a2enmod cgi
然后重启apache!
答案 1 :(得分:7)
我在Ubuntu 14.04尝试设置bugzilla时遇到了这个问题@ Andrew的答案很有帮助,@ Kevin的链接也是如此...所以除了启用cgi之外,请确保perl的模块for apache2已安装。您可以通过以下方式执行此操作:
sudo apt-get install libapache2-mod-perl2
这将自动启用模块以及重启apache服务器。如果不是手动执行此操作。
没有足够的代表来支持你们两个人,谢谢。
答案 2 :(得分:6)
从@tops扩展answer。
尝试sudo a2enmod cgi
,如果您已经尝试过一些教程,例如Apache Tutorial: Dynamic Content with CGI,Ubuntu HTTDP或How to Install Apache2 webserver with PHP, CGI, and Perl Support in Ubuntu Server,但仍然无法弄清楚它们缺少什么。
然后重启apache!
可以通过以下方式完成:
sudo /etc/init.d/apache2 restart
sudo apache2ctl restart
sudo service apache2 restart
&lt; - 先尝试一下
这对我在Ubuntu 13.10上有用。
来自基于RedHad的发行版的用户的新命令:
a2enmod
a2dismod
a2enconf
a2disconf
a2ensite
a2dissite
请记住,默认情况下,主配置文件为/etc/apache2/apache2.conf
,模块和网站的各个配置组件位于不同的文件中。
编辑:详细介绍了为什么来this page的人可能难以在Ubuntu上启用Apache CGI。
答案 3 :(得分:0)
在Ubuntu 13.10上安装Apache的步骤:
sudo apt-get install apache2
sudo service apache2 start
在Ubuntu 13.10上测试Apache的步骤:
在Ubuntu 13.10上使用Apache下的CGI程序的步骤:
在Ubuntu 13.10上测试Apache下的CGI程序的步骤:
/usr/lib/cgi-bin/
(例如/usr/lib/cgi-bin/test
)sudo chmod +x /usr/lib/cgi-bin/test
注意:“your-host-here.com”可能是“localhost”,但是我不会让我在网址中使用它: - /
答案 4 :(得分:0)
确保启用apache cgi模式
sudo a2enmod cgi //will enable the cgi mode
sudo a2dismod cgi //Will disable the cgi mode
将所有文件保存在webroot“cgi-bin”文件夹下
sudo mkdir /home/www/cgi-bin
确保.cgi文件的文件权限正常
sudo chmod 755 yourFile.cgi
尝试通过终端
执行perl /Path_To_The_File/fileName.cgi
确保您的fileName.cgi在文件顶部包含以下代码
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
如果以上所有步骤都运行良好,那么
在apache中为perl项目创建虚拟主机
cp /etc/apache2/sites-available/000-default.conf ./your_project.conf
sudo nano /etc/apache2/sites-available/your_project.conf
在your_project.conf文件中,替换这些行
<VirtualHost *:80>
ServerAdmin xyz@gmail.com
DocumentRoot /var/www/html/cgi-bin //Define where your project is
ServerName your_project.com //URL through which you want to access
ServerAlias your_project.com
ErrorLog ${APACHE_LOG_DIR}/error.log //Error for the project will store in this file
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" //particular directory is set aside for CGI programs
<Directory /var/www/html/cgi-bin/>
##TO consider the files as cgi which has .cgi and .pl extension
Options +ExecCGI
AddHandler cgi-script .cgi .pl
##To consider all files as cgi file (if want to use remove # from last two line add in above 2 line)
#Options ExecCGI
#SetHandler cgi-script
</Directory>
</VirtualHost>
运行这些命令
sudo a2ensite your_project.conf //Will enable your configuration file
sudo service apache2 restart //Restarting apache2
添加您的主机
sudo nano /etc/hosts
//add this line
127.0.0.1 your_project.com
现在运行执行你的cgi文件
your_project.com/cgi-bin/fileName.cgi
答案 5 :(得分:-1)
我试图重现这个问题,这就是我所学到的: 在/ etc / apache2 / sites-available中,您可以设置多个站点,也可以使用默认站点。 无论哪种方式都有....显示我的DocuumentRoot的路径(其中我的.html文件存在)。第二个....显示我的.cgi,.pl,.perl文件的路径:
<VirtualHost *:8080>
ServerName casey.local
**DocumentRoot /home/casey/work/htdocs/casey.local**
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
**<Directory "/usr/lib/cgi-bin">**
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>