为什么我的 Perl CGI 脚本会在 Apache 上引发内部服务器错误?

为什么我的 Perl CGI 脚本会在 Apache 上引发内部服务器错误?

我已经apache2在 Ubuntu 11.04 上安装了,并且本地主机正在运行。我创建了一个简单的 printenv.pl 脚本,并将其放在以下目录中

$ mv printenv.pl /usr/lib/cgi-bin/
$ chmod +rx /usr/lib/cgi-bin/printenv.pl

然而当我去http://127.0.0.1/cgi-bin/printenv.pl,我收到 500 内部服务器错误

我检查了错误日志/var/log/apache2,它的内容如下:

[Mon Oct 24 11:04:25 2011] [error] (13)Permission denied: exec of '/usr/lib/cgi-bin/printenv.pl' failed
[Mon Oct 24 11:04:25 2011] [error] [client 127.0.0.1] Premature end of script headers: printenv.pl

关于如何修复此问题并在本地主机上运行 CGI 脚本,有什么建议吗?

答案1

我也遇到过这个问题。原来我把.pl文件权限设置为了775。Apache 不允许用户写入。尝试将.pl文件权限更改为755

如果不是,请检查您的网站权限设置/etc/apache2/sites-available

答案2

不久之前,我遇到了同样的问题(具有完全相同的路径、目录、权限等),然后我突然明白了大约一周前在 Apach2 文档中读到的内容。

就是这样 - 到目前为止你设置的一切都很好,但出于安全原因,apache 将不是运行任何文件(CGI、Perl、C 等),除非其写入权限 (w) 已完全删除

使权限看起来像这样:-r-xr-xr-x

然后它应该可以正常工作。希望这能有所帮助,如果它仍然不起作用,请告诉我。

相关内容