答案 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命令如果没有。您必须递归地为所有.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 /锁':权限被拒绝“)。