我有以下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 40
和FcgidBusyTimeout 3600
。 peercoin-abe.fcgi是可执行文件并由root拥有。 peercoin-abe是可执行文件并由matt拥有。
所以你会期望输出到abe-peercoin.log,但没有。直接运行peercoin-abe.fcgi会导致输出到abe-peercoin.log。
答案 0 :(得分:1)
Fcgi对此并不十分明确,但问题是由于网络用户无权执行哑光的权限。将此添加到sudoers文件是必要的:
www-data ALL=(matt) NOPASSWD: /home/matt/cgi-bin/peercoin-abe