CGI脚本:环境中没有REQUEST_METHOD

时间:2014-12-01 08:58:13

标签: apache perl cgi fastcgi

我有一个基本的Ubuntu服务器设置,我试图在其上运行CGI脚本,但每当我尝试通过命令行运行脚本时收到以下错误:

  

CGI将在下一个主要版本中从Perl核心发行版中删除。请安装单独的libcgi-pm-perl软件包。它在/etc/perl/RABX.pm,第583行使用。

     

CGI :: Util将在下一个主要版本中从Perl核心发行版中删除。请安装单独的libcgi-pm-perl软件包。它正在/usr/share/perl/5.20/CGI.pm,第29行使用。

     

状态:400错误请求
  内容类型:application / octet-stream
  内容长度:98

     

E1:0,3:513,82:环境中没有REQUEST_METHOD;此脚本必须在CGI / FastCGI上下文中运行,N

如果我尝试在浏览器中运行脚本,我只会收到500内部服务器错误。

我对安装libcgi-pm-perl软件包持谨慎态度,因为CGI脚本是更大的遗留应用程序的一部分,我担心这些应用程序与新软件包不兼容。我不知道这是真正的错误还是更多的警告。

真正让我感到困惑的是最后一行。任何建议将不胜感激!

完整的脚本可以在这里看到:https://github.com/mysociety/writetothem/blob/master/web/services/queue.cgi

另外,如果这个问题更适合ServerFault,请道歉 - 我不确定哪个更适合。

1 个答案:

答案 0 :(得分:3)

  

每当我尝试通过命令行运行脚本时   ...   此脚本必须在CGI / FastCGI上下文中运行

你得到错误"环境中没有REQUEST_METHOD"因为您没有在CGI上下文中运行,而是在命令行上运行。

  

请安装单独的libcgi-pm-perl软件包

     

我对安装libcgi-pm-perl软件包持谨慎态度,因为CGI脚本是更大的遗留应用程序的一部分,我担心这些应用程序与新软件包不兼容。我不知道这是真正的错误还是更多的警告。

这是一个警告,您最好安装libcgi-pm-perl,因为CGI.pm将来不会包含在核心perl中。此软件包中的CGI.pm与核心perl中的相同,因此您不必担心拥有不同的模块。当然,它可能是比以前更新的版本。但是在过去使用新的perl版本的情况也是如此。