在发送到 cgi 处理程序之前修改文件

在发送到 cgi 处理程序之前修改文件

我正在制作 Apache 的便携式安装以运行 Bugzilla。此安装具有 Perl 的便携式版本,我希望 mod_cgi 使用它。但是,mod_cgi 无法配置预期的二进制文件(或每个文件类型的二进制文件),因此它依赖于 shebang 来知道要执行什么。

我的问题是这样的:Bugzilla 的 perl 文件有一个指向的 shebang #!/usr/bin/perl -T,因为我使用的是 Windows(不幸的是,对此无能为力)我想要使​​用专为服务器设计的特定的 Perl 发行版,我需要修改 shebangs。

我知道我可以预先运行一个 perl 脚本,然后将所有 shebang 替换为指向正确二进制文件的 shebang,但我更喜欢更强大的解决方案。我想到了过滤器和 mod_lua,但 Apache 及其模块似乎没有钩子或指令,允许在将文件发送到 cgi 进程之前对其进行处理。它们只能处理客户端发送的请求或最终输出,然后再将其发送回客户端。

在将文件发送到 cgi 进程之前,是否有任何方法可以使用 Apache 或模块来处理文件?

有没有办法让 cgi 进程认为我想要的 perl 实际上存在/usr/bin/perl

答案1

第一个问题:不,不容易。而且我知道的几种方法总是会导致“后续”问题

第二个问题:是的。您可以简单地创建一个“Drive”:\usr\bin 文件夹,并在那里安装所需的 Perl 版本。请注意,“Drive”需要等于您的 Apache 服务正在运行的驱动器号。然后您的脚本将使用此 Perl 版本而无需更改。

相关内容