我有一个基本的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
内容长度:98E1: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,请道歉 - 我不确定哪个更适合。
答案 0 :(得分:3)
每当我尝试通过命令行运行脚本时 ... 此脚本必须在CGI / FastCGI上下文中运行
你得到错误"环境中没有REQUEST_METHOD"因为您没有在CGI上下文中运行,而是在命令行上运行。
请安装单独的libcgi-pm-perl软件包
我对安装libcgi-pm-perl软件包持谨慎态度,因为CGI脚本是更大的遗留应用程序的一部分,我担心这些应用程序与新软件包不兼容。我不知道这是真正的错误还是更多的警告。
这是一个警告,您最好安装libcgi-pm-perl,因为CGI.pm将来不会包含在核心perl中。此软件包中的CGI.pm与核心perl中的相同,因此您不必担心拥有不同的模块。当然,它可能是比以前更新的版本。但是在过去使用新的perl版本的情况也是如此。