通过浏览器从php脚本调用svn更新无效

时间:2010-06-01 07:05:21

标签: php svn shell browser

6 个答案:

答案 0 :(得分:3)

我也遇到了同样的问题但是甚至没有权限解决了它。

根据其他一些建议,我做了:

<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive');

然后我将错误转储到浏览器中:

svn: warning: Can't open file '/root/.subversion/servers': Permission denied
svn: OPTIONS of 'http://my.svn.server/svn/project/trunk': authorization failed: Could not authenticate to server: rejected Basic challenge (http://my.svn.server)

不确定为什么我的网络服务器用户试图访问/ root但是我通过在svn up命令中添加--config-dir来修改问题而不更改任何权限:

<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive --config-dir /path/to/my/home/.subversion');

*请注意/path/to/my/home/.subversion存在,因为初始签出是在命令行上完成的

答案 1 :(得分:2)

获取返回值的标准错误:

shell_exec('2>&1 svn update')

如果你将2>&1放在最后

,它就不起作用

答案 2 :(得分:1)

您是否尝试过PECL svn extension?您无需使用shell_exec

答案 3 :(得分:1)

行。我知道了。 这是权限问题。 .svn目录必须具有正确的权限,因为svn update命令正在使用这些目录来编写内容。

原来如此! ---确保以sudo或root ----

运行所有chmod命令
  1. 在.svn目录
  2. 上运行chmod 777
  3. 通过命令行运行svn update
  4. 调用脚本
  5. 如果没有。您必须递归地为所有.svn目录运行chmod 777,然后运行另一个svn update

    仍然没有?

    确保您没有两个svn客户端 在我的例子中,UI使用的svn客户端与svn(命令行)不同 如果您有两个客户端,请确保它们运行相同的版本 或者更新您的脚本以直接调用客户端。

    仍然没有?

    运行chmod 777 -R * svn更新 然后再试一次

    如果您可以使用其他一组权限,请告诉我们。我知道777并不理想,但我不能用更低的东西来工作。

    再次感谢你们。

答案 4 :(得分:1)

是的,问题是.svn目录的权限。

确保它对PHP运行的用户具有正确的权限(在我的情况下是apache),chmod到775。

答案 5 :(得分:0)

可能是权限问题:通过Web浏览器调用的脚本在不同于svn工作目录所有者的用户名下运行,因此它具有只读访问权限。只有svn status才能执行只读访问,但svn update不能执行(尽管在这种情况下应该有一个错误,如“svn:无法打开文件'.svn /锁':权限被拒绝“)。