![](/img/trans.png)
[英]500 Internal Servor Error when trying to run a perl cgi file on Apache 2.4.6 Ubuntu 13.10
[英]Cannot run cgi, show plain text only (Ubuntu 13.10 Apache 2.4)
我只是安装了 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 文档,但仍然无法解决。 是不是因为“+ExecCGI”代码有问题? 我看到另一个人在将 Ubuntu 12.04 更新到 13.10 后也遇到了类似的问题。 也许 Ubuntu 是问题所在? 请帮忙。 Apache 配置和 Ubuntu 权限几乎让我发疯。
试试这个命令:
sudo a2enmod cgi
然后重启apache!
我在 Ubuntu 14.04 中尝试设置 bugzilla 时遇到了这个问题@Andrew 的回答很有帮助,@Kevin 的链接也是如此。所以除了启用 cgi,确保安装了 perl 的 apache2 模块。 您可以通过以下方式执行此操作:
sudo apt-get install libapache2-mod-perl2
这将自动启用该模块并重新启动 apache 服务器。 如果没有,请手动执行。
没有足够的代表来支持你们两个,所以谢谢。
扩展来自@tops 的答案。
尝试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
<- 先试试这个
这在 Ubuntu 13.10 上对我有用。
来自基于 RedHad 的发行版的用户的新命令:
a2enmod
a2dismod
a2enconf
a2disconf
a2ensite
a2dissite
请记住,主配置文件默认为/etc/apache2/apache2.conf
,模块和网站的各个配置组件在单独的文件中。
编辑:详细说明为什么访问此页面的人可能在 Ubuntu 上启用 Apache CGI 时遇到困难。
在 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”,但 SO 不会让我在 URL 中使用它:-/
确保启用 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
撤回我以前的答案,从评论中我了解到重新启动 apache 是答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.