我有两个脚本。
- 运行更新并调用 shell_exec('svn update') 和 shell_exec('svn st')
- 运行 mysqldump shell_exec('mysqldump params')
svn 脚本没有运行更新命令,svn st
正在打印结果但不是 svn update
我尝试在调用svn update eg时声明参数 'svn更新'。目录' --username myuser --password mypasswd --non-interactive'; - 依然没有 玩过大部分参数
如果这与二进制文件/权限/组有关,我看不到。 mysqldump 命令工作正常并且正在生成文件,那么为什么 svn 不更新文件系统?
请不要建议在 PHP 中使用核心 SVN 类。这不是一个选项,我无法完全控制服务器并且该模块不可用。
谢谢你的帮助,
-hbt
附注:重要的事情要在这里提一下。通过命令行调用时,脚本有效。它仅在通过网络浏览器调用时失败。
最佳答案
我也遇到了同样的问题,但连权限都没有解决。
根据这里的一些其他建议,我做了:
<?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 但我通过将 --config-dir 添加到 svn up 命令来解决问题而不更改任何权限:
<?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 存在,因为初始 checkout 是在命令行上完成的
关于php - 通过浏览器从 php 脚本调用 svn 更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947843/