通过浏览器从php脚本调用svn更新不起作用
我有两个脚本通过浏览器从php脚本调用svn更新不起作用,php,svn,shell,browser,Php,Svn,Shell,Browser,我有两个脚本 运行更新并调用shell_exec(“svn更新”)和shell_exec(“svn st”) 运行mysqldump shell_exec('mysqldump params') svn脚本未运行update命令,svn st正在打印结果,而不是svn update 我试图在调用svn update eg时声明参数 “svn更新”。迪尔。”--用户名myuser——密码mypasswd——非交互式'; --还是没什么 和大多数的情妇一起玩 如果这与二进制文件/权限/组有关,我看不
svn st
正在打印结果,而不是svn update
我试图在调用svn update eg时声明参数
“svn更新”。迪尔。”--用户名myuser——密码mypasswd——非交互式';
--还是没什么
和大多数的情妇一起玩
如果这与二进制文件/权限/组有关,我看不到它。
mysqldump命令工作正常,正在生成一个文件,那么为什么svn不更新文件系统呢
请不要建议在PHP中使用核心SVN类。这不是一个选项,我无法完全控制服务器,并且模块不可用
谢谢你的帮助
-hbt
附言:这里要提到的重要事项。当通过命令行调用时,脚本可以工作。只有通过web浏览器调用时才会失败。这可能是权限问题:通过web浏览器调用的脚本在不同于svn工作目录所有者的用户名下运行,因此它具有只读访问权限。只读访问应该足以执行
svn status
,但不足以执行svn update
(尽管在这种情况下会出现类似“svn:无法打开文件”.svn/lock:权限被拒绝”这样的错误)。您是否尝试了该操作?您不需要为此使用shell\u exec
。好的。我得到了它。
这是一个权限问题。.svn目录必须具有正确的权限,因为svn update命令正在使用这些目录编写内容
所以!
---确保以sudo或root的身份运行所有chmod命令----
再次感谢各位。要获取返回值中的标准错误,请使用:
shell_exec('2>&1 svn update')
如果您将
2>&1
放在末尾,它将不起作用是的,问题是.svn目录的权限
确保它对运行PHP的用户具有正确的权限(在我的例子中是apache),并将其设置为775。我也遇到了同样的问题,但权限都没有解决它 根据这里的一些其他建议,我做到了:
<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive');
不确定我的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');
从web浏览器调用shell\u exec('svn update')
的结果时,您确定结果为空吗?很可能是权限问题(svn工作目录和http进程的不同用户),但在这种情况下,应该会出现类似“svn:无法打开文件”.svn/lock:权限被拒绝”的错误。您是否已尝试捕获输出并将其转储到屏幕上/调试时查看输出?例如,$output=shell_exec('svn update…');打印(输出)代码>。您确定没有忘记将文件夹作为变量引用(因为给出的示例包含dir而不是$dir,当然,除非dir被定义为命名常量)。@alexander确实具有权限。它是.svn目录。svn update命令正在尝试在其中写入内容。谢谢你的帮助help@wimvds是的,这个例子是即时编写的。对于exec
命令,print\r返回空,对于shell\u exec
命令,var\u dump返回空。不过我想出来了。把答案贴在下面。谢谢你的帮助,我找到了另一种工作顺利的方法。很遗憾,服务器上没有svn扩展。没有错误,但已通过权限修复。把答案贴在下面。谢谢
<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive --config-dir /path/to/my/home/.subversion');