mod_fcgid,perl 脚本输出到 apache error_log

mod_fcgid,perl 脚本输出到 apache error_log

安装 mod_fcgid 后,我试图让旧的 Perl 脚本再次运行。我不得不为新客户端安装 mod_fcgid,但它似乎破坏了我的其他一些 cgi 脚本。

转到该页面时,现在出现 500 错误。我检查了错误日志,脚本的输出在错误日志中...因此脚本正在运行,但由于某种原因,它仍然向浏览器发送 500 内部服务器错误...

HTML 标题是首先打印的内容……所以我真的不确定为什么会发生这个错误。

错误日志:

[省略:html 输出]
[2010 年 12 月 8 日,星期三 08:59:18] [警告](104)对端重置连接:mod_fcgid:从 fastcgi 服务器读取数据时出错。
[2010 年 12 月 8 日,星期三 08:59:18] [错误] [客户端 xxxx] 脚本标头过早结束:www_protect.cgi,引用者:http://www.mywebsite.net/
[2010 年 12 月 8 日星期三 08:59:21] [通知] mod_fcgid:进程 /www/sites/somescript.cgi(6747) exit(通信错误),通过调用 exit() 终止,返回代码:0

fcgi.conf:

  添加处理程序 fcgid 脚本 .fcgi .cgi
  #Socket路径 /var/lib/apache2/fcgid/sock
  IPC连接超时 45
  IPCComm超时 20
  输出缓冲区大小 0
  每个进程的最大请求数 500
  空闲超时 3600
  进程寿命 7200
  最大进程数 8
  默认最大类进程数 2


# 放置套接字和共享内存文件的理想位置
套接字路径 /var/run/mod_fcgid
共享内存路径 /var/run/mod_fcgid/fcgid_shm

答案1

您的配置告诉 Apache 在 FastCGI 下提供所有 CGI 脚本,但这是不可能的。FastCGI 不直接兼容 CGI 脚本。

您应该将 AddHandler 指令移到客户端的 VirtualHost 中,这样它就不会适用于整个配置,例如

<VirtualHost *:80>
    ServerName clienthost.com
    ...
    AddHandler fcgid-script .fcgi .cgi
</VirtualHost>

如果你的客户端脚本与你的其他 cgi 脚本位于同一个 VirtualHost 上,你可以将 FastCGI 处理限制到特定的位置或目录,例如

<Location /clientarea>
    AddHandler fcgid-script .fcgi .cgi
</Location>

相关内容