我有以下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。

最佳答案

Fcgi对此不是很明确,但问题是由于web用户的权限不能作为matt执行。必须将其添加到sudoers文件中:

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

10-04 21:43