trac:“内部服务器错误(500)”与mod_fcgid和mod_suexec

我尝试在具有shell访问权的共享服务器上设置Trac,SW是Trac 1.0.1,Python 2.6.6,Apache 2.2.15,带有mod_fcgid和mod_suexec。

我已经按照我的主机的wiki的说明设置了它, https: //uberspace.de/dokuwiki/cool:trac。 唯一的区别是我的TRAC_ENV目录位于子目录中,而不是直接在我的家里(即〜/ path / to / trac,而不是〜/ trac)。 (我在DocRoot中将trac.fcgi重命名为foo-trac.fcgi,如下所示,但我也尝试将其重命名为trac.fcgi。)

正如在那里写的,我从TRAC_ENV / deploy / cgi-bin /复制了trac.fcgi(也尝试了trac.cgi)到$ DocRoot / foo / foo-trac.fcgi并添加

Options +ExecCGI AddHandler fcgid-script .fcgi # also tried "AddHandler cgi-script .cgi" RewriteEngine On RewriteBase /foo RewriteRule ^$ foo-trac.fcgi [L] # also tried foo-trac.cgi RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) foo-trac.fcgi/$1 [QSA,L] # also tried foo-trac.cgi 

到$ DocRoot / foo / .htaccess。

TRAC_ENV在foo-trac.f?cgi(绝对path从/开始)中正确设置,

但现在,我只得到“500内部服务器错误”,并在我得到的error_log

 (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server Premature end of script headers: foo-trac.fcgi 

(用fcgi)

 suexec failure: could not open log file fopen: Permission denied Premature end of script headers: foo-trac.cgi 

(与CGI)。

所有.f?cgi文件,它们的目录,.egg_cache目录(我已经mkdir了,不存在,不是由trac(或python)本身创build的),而且日志目录是模式0755. Log文件是0644(我尝试过触摸它们)。

(好吧,Apache日志目录和文件归属于(也是group也是)root,但是我当然不会自己写任何日志,TRAC_ENV / log /和〜/ log /是我的,我也尝试设置模式777(dir)分别666(trac.log) – 没有帮助,所以我把这些模式再次转换为755/644。)

我也已经尝试/检查从http://encodable.com/internal_server_error/和/ suexec_problems /提示,但没有任何工作或帮助。

任何提示寻找问题(似乎是suexec,但也许这是重写规则;但/和), 如何发现它? 或者,也许任何人直接有解决scheme? 🙂

问候,

平绒

那么,我已经得到了答案。

我必须道歉:这是http://encodable.com/internal_server_error/的提示之一 – 尽pipe我已经足够天真地相信,行结束必须是正确的(Unix风格,而不是像Windows CR / LF结局),因为我只使用Linux。

而且我没有想到我会从trac的项目中得到破坏的文件…但是,这是多亏了我的主机uberspace.de的支持,谁find了它。 🙂

所以,一个简单的dos2unix trag.fcgi解决了这个问题 – 但是在整个TRAC_ENV目录和库(在我的例子中是〜/ lib / python2.6 /)都有大量的CRLF结尾文件,所以我推荐了类似

 for file in $( find $TRAC_ENV $LIB_DIR -type f | xargs file | grep -i text | grep CRLF | cut -d\: -f1 ); do dos2unix $file done 

你应该再次开心! ;)