[英]Calling an svn update from a php script via a browser is not working
我有两个脚本。
svn脚本没有运行update命令, svn st
是打印结果而不是svn update
我在调用svn update时尝试声明参数,例如'svn update'。 迪尔。 '--username myuser --password mypasswd --non-interactive'; - 仍然没有玩大多数参数
如果这是与二进制文件/权限/组相关的内容,我看不到它。 mysqldump命令工作正常并生成一个文件,为什么svn不更新文件系统?
请不要建议在PHP中使用核心SVN类。 这不是一个选项,我没有完全控制服务器,模块不可用。
谢谢你的帮助,
-hbt
PS:这里要提到的重要一点。 通过命令行调用脚本时可以正常工作 。 它仅在通过Web浏览器调用时失败。
我也遇到了同样的问题但是甚至没有权限解决了它。
基于这里的一些其他建议,我做了:
<?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)
不知道为什么我的Web服务器用户试图访问/ 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存在,因为初始签出是在命令行上完成的
要在返回值中使用标准错误:
shell_exec('2>&1 svn update')
如果你把2>&1
放在最后,它就不起作用
好。 我知道了。 这是权限问题。 .svn目录必须具有正确的权限,因为svn update命令正在使用这些目录来编写内容。
所以! ---确保以sudo或root运行所有chmod命令----
如果没有。 您必须递归地为所有.svn目录运行chmod 777,然后运行另一个svn更新
依然没有?
确保你没有两个svn客户端在我的情况下,UI使用的svn客户端与svn(命令行)不同如果你有两个客户端,请确保它们运行相同的版本或更新你的脚本来调用客户直接。
依然没有?
运行chmod 777 -R * svn更新,然后重试
如果您可以使用另一组权限,请告诉我。 我知道777并不理想,但是我不能用更低的东西来工作。
再次感谢你们。
是的,问题是.svn目录的权限。
确保它对PHP运行的用户具有正确的权限(在我的情况下是apache)并将其chmod
到775。
它可能是权限问题:通过Web浏览器调用的脚本在不同于svn工作目录的所有者的用户名下运行,因此它具有只读访问权限。 只读访问应该足以执行svn status
,但不能用于svn update
(尽管在这种情况下应该有一个错误,如“svn:无法打开文件'.svn / lock':Permission denied” )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.