求助:在.htaccess中用SetEnv设置CGIT_CONFIG后cgit无法识别该变量
解决cgit无法读取.htaccess中SetEnv设置的CGIT_CONFIG问题
以下是几个无需修改主Apache配置的可行方案:
用SetEnvIf替代SetEnv
SetEnv设置的变量有时无法传递到CGI环境,改用SetEnvIf(利用总能满足的条件强制设置):SetEnvIf Host .* CGIT_CONFIG="/home/user_253/etc/cgitrc"替换原有的
SetEnv "CGIT_CONFIG" "/home/user_253/etc/cgitrc"行。通过RewriteRule传递环境变量
在RewriteRule中添加E标志直接传递变量给CGI:RewriteRule (.*) /index.cgi/$1 [END,QSA,E=CGIT_CONFIG:/home/user_253/etc/cgitrc]同时可以移除原有的SetEnv行。
检查文件权限
确保cgit运行用户(通常是Apache进程用户或你的宿主用户)能读取配置文件:- 配置文件权限设为
644:chmod 644 /home/user_253/etc/cgitrc - 上级目录权限设为
755:chmod 755 /home/user_253 /home/user_253/etc
- 配置文件权限设为
如果是脚本包装的cgi(非编译二进制)
直接在index.cgi开头添加环境变量赋值:$ENV{'CGIT_CONFIG'} = '/home/user_253/etc/cgitrc';注:如果是编译好的cgit二进制改名为index.cgi,此方法不适用。
内容的提问来源于stack exchange,提问作者Reza Mahdi
相关产品推荐
相关产品推荐

