繁体   English   中英

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

[英]Calling an svn update from a php script via a browser is not working

我有两个脚本。

  1. 运行更新并调用shell_exec('svn update')和shell_exec('svn st')
  2. 运行mysqldump shell_exec('mysqldump params')

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放在最后,它就不起作用

你试过PECL svn扩展吗? 您不需要为此使用shell_exec

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

所以! ---确保以sudo或root运行所有chmod命令----

  1. 在.svn目录上运行chmod 777
  2. 通过命令行运行svn update
  3. 调用脚本

如果没有。 您必须递归地为所有.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM