在Apache和mod_python下运行Subversion

6 投票
6 回答
5816 浏览
提问于 2025-04-11 09:23

我的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

虽然这并没有解决你的环境问题,但至少可以让你的脚本正常运行...

撰写回答