执行CGI脚本的解决方案

时间:2017-09-08 22:05:35

标签: apache cgi httpd.conf mod-perl

我有一些CGI脚本,这些脚本在组织内部使用。由于一些标准更改,服务器/系统团队已经从支持CGI脚本的httpd.conf(apache配置文件)中注释了以下行。由于此更改,现有的CGI脚本会受到影响,无法在浏览器上执行它们。

### LoadModule cgid_module modules / mod_cgid.so

有没有办法克服这种情况并使脚本按原样运行。

注意:上述注释行无法取消注释/启用。

2 个答案:

答案 0 :(得分:3)

各种规避公司政策的方法:

  • 无论如何加载mod_cgi。

  • 加载mod_fcgi,并将CGI脚本转换为快速CGI守护程序。它做了很多工作,但你可以从中获得更快的代码!

  • 加载自己的模块,与mod_cgi完全相同。 mod_cgi是开源的,因此重命名它应该很容易。

  • 加载mod_fcgi,并编写一个执行脚本的快速CGI守护程序。

  • 安装第二个启用了mod_cgi的apache Web服务器。直接链接到它或在原始服务器上使用mod_proxy。

  • 编写自己的Web服务器。直接链接到它或在原始服务器上使用mod_proxy。

答案 1 :(得分:0)

Last time you asked this question,您谈过使用mod_perl代替。在mod_perl下运行CGI程序的标准方法(对于某些值"未更改")是使用ModPerl::Registry。你试过吗?怎么回事?

另一种方法是将您的程序转换为使用PSGI。您可以尝试使用Plack::App::Wrap::CGICGI::Emulate::PSGI。使用Plack可以解除任何部署限制。您可以在mod-perl下运行代码,甚至可以作为代理服务器后面的单独服务运行。

但我无法惊叹于整个局势是多么荒谬。贵公司有CGI程序,它(可能)依赖于其部分业务。他们只是决定关闭对他们的支持。您需要找出为什么做出这个决定并尝试花一些时间才能转换为替代技术。