如何使 apache 在执行 cgi 时跳过特定的 stdout 行或停止共享库打印到 stdout

How to make apache skip specific stdout lines when executing cgi or stop shared library from printing to stdout

我的 apache 服务器执行一个 cgi bin 并读取输出到 stdout 的行。问题是,每次执行 cgi-bin 时,都会出现一些由于 API 动态库加载而导致的行。 Apache 现在无法将这 3 行与启动我的流式传输的 HTTP 请求区分开来。 有没有一种方法可以让 apache 跳过阻止它工作的行或阻止共享库打印它的负载?

如果您的网站每秒执行的请求少于几个,您可以通过使用 shell 脚本包装 CGI 来使用一个简单的 hack 来过滤掉问题行:

-- 将下面的代码放入新的 cgi 脚本中并确保 chmod +x -- 通过 运行 手动测试 shell --

#! /bin/bash
/path/to/old-cgi | egrep -v troublestring1\|troublestring2\|troublestring3 

您必须确保故障字符串足够独特,绝不会合法地出现在您的实际输出中。如果你找不到这样的字符串,你可能需要一个更复杂的解析脚本来代替 egrep 过滤器。