我在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
感谢您的帮助!非常感谢!
答案 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
然后告诉我们输出。