mod_fcgid: 从FastCGI服务器读取数据时出错" 适用于直接运行的简单fcgi脚本

0 投票
1 回答
1314 浏览
提问于 2025-04-18 18:14

我有一个这样的fcgi脚本:

#! /usr/bin/python
import subprocess, sys, os
command=["sudo", "-u", "matt", "/home/matt/cgi-bin/peercoin-abe", str(os.getpid())]
subprocess.Popen(command, stdin=sys.stdin).wait()

peercoin-abe包含:

#! /bin/sh PYTHONUNBUFFERED=1 exec python /home/matt/peercoin-explorer/Peercoin-Abe/abe.py \
--config /home/matt/abe-peercoin.conf --static-path static/ --watch-pid="$1" >> /home/matt/abe-peercoin.log

但是当我尝试访问它时,错误日志里出现了错误:

[Fri Aug 22 22:07:08 2014] [warn] [client 149.254.181.200] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Fri Aug 22 22:07:08 2014] [error] [client 149.254.181.200] Premature end of script headers: peercoin-abe.fcgi

我设置了FcgidIOTimeout 40FcgidBusyTimeout 3600。peercoin-abe.fcgi是可执行的,并且归root所有。peercoin-abe是可执行的,并且归matt所有。

所以你应该能在abe-peercoin.log里看到输出,但实际上没有。直接运行peercoin-abe.fcgi时,abe-peercoin.log里会有预期的输出。

1 个回答

1

Fcgi没有明确说明这个问题,但其实是因为网页用户没有权限以matt的身份执行操作。为了让它能正常工作,需要把这个权限添加到sudoers文件里:

www-data ALL=(matt) NOPASSWD: /home/matt/cgi-bin/peercoin-abe

撰写回答