在Apache和mod_python下运行Subversion
我的Apache服务器是用一个非默认的(不是root用户)账户运行的。当它尝试运行一个Python脚本,而这个脚本又去执行一个Subversion的检出命令时,'svn checkout'就失败了,并显示了以下错误信息:
svn: Can't open file '/root/.subversion/servers': Permission denied
同时,如果我在命令行下用同样的用户账户运行这个Python脚本,里面的Subversion检出命令就能正常工作。
我的Apache服务器是2.2.6版本,使用mod_python 3.2.8,运行在Fedora Core 6的机器上。
有没有人能帮我解决这个问题?非常感谢。
6 个回答
0
试着给Apache用户(也就是运行Apache服务的那个用户)在那个文件上添加读和写的权限。
0
“权限被拒绝”这个错误说明脚本是以管理员身份在运行,因为它在管理员的家目录里寻找文件。
我建议你把钩子脚本改成这样:
id > /tmp/id
这样你就可以检查一下结果,确认一下用户ID和组ID是什么。你可能会发现它并不是以你想的那个用户在运行。
我最开始的猜测,和Troels一样,也是SELinux,但这只是我的猜测,前提是你非常确定通过Apache运行的脚本和你手动测试时使用的是完全相同的用户和组。
5
听起来你运行Apache的环境有点特别。无论是什么原因,svn似乎认为它需要的用户配置文件在/root这个地方。你可以通过在命令行上指定要使用哪个配置目录,来避免svn使用root的文件,方法如下:
svn --config-dir /home/myuser/.subversion checkout http://example.com/path
虽然这并没有解决你的环境问题,但至少可以让你的脚本正常运行...