Apache Perl cgi-bin设置:内部服务器错误

时间:2016-12-01 00:09:33

标签: apache perl http apache2 cgi-bin

我在Apache2服务器上正确设置Perl Web应用程序时遇到了困难。尝试从Web浏览器访问该站点时,我收到500 Internal Server Error

错误日志中的错误消息是:

[Wed Nov 30 23:55:46.848517 2016] [cgid:error] [pid 6899] (2)No such file or directory: AH01241: exec of '/var/cgi-bin/choose.pl' failed

[Wed Nov 30 23:55:46.849213 2016] [cgid:error] [pid 2090] [client 127.0.0.1] End of script output before headers: choose.pl, referer: http://localhost/test/

但是当我尝试从终端(perl choose.pl)运行脚本时,它按预期运行,没有错误。这些文件有755个版权,并以合适的shebang开头。

脚本加载到这样的html文件中:<frame src=/cgi-bin/choose.pl name=choose scrolling=auto>当我尝试直接访问它时,它也会失败。

我的/etc/apache2/sites-available/000-default.conf如下:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ScriptAlias "/cgi-bin/" "/var/cgi-bin/"
<Directory "/var/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

感谢您的帮助!非常感谢!

1 个答案:

答案 0 :(得分:0)

一些常见问题(评论中已经提到过一些)

1:文件不存在。

2:当缺少shebang时,AH01241通常会显示出来。 尝试将其添加为perl文件中的第一行:

#!/usr/bin/perl

如果您已经有一行以#开头!然后告诉我们并告诉我们这一行。

3:错误的权限。如果上述建议不起作用,请尝试运行:

chmod 755 /var/cgi-bin/choose.pl

如果你已经达到这个目的并且没有任何效果:

ls -la /var/cgi-bin/choose.pl

然后告诉我们输出。