Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN commit命令行,路径在php中的变量内_Php_Svn_Cmd_Tortoisesvn_Commit - Fatal编程技术网

SVN commit命令行,路径在php中的变量内

SVN commit命令行,路径在php中的变量内,php,svn,cmd,tortoisesvn,commit,Php,Svn,Cmd,Tortoisesvn,Commit,我需要创建一个与SVN命令行一起工作的web应用程序。因此,我想将exec命令与svn commit一起使用,并且一个变量包含工作副本的路径。我尝试了这个代码,但没有成功。承诺没有发生 <?php $lpath="c:\a\svn\projectwc"; $msg="first commit"; exec("svn commit -m $msg $lpath"); ?> 是的,我已经在里面添加了所有的文件。我尝试用路径值替换lpath,结果成功了。 请帮助…您的字符串扩展到 s

我需要创建一个与SVN命令行一起工作的web应用程序。因此,我想将exec命令与svn commit一起使用,并且一个变量包含工作副本的路径。我尝试了这个代码,但没有成功。承诺没有发生

<?php
$lpath="c:\a\svn\projectwc";
$msg="first commit";
exec("svn commit -m $msg $lpath");
?>

是的,我已经在里面添加了所有的文件。我尝试用路径值替换lpath,结果成功了。 请帮助…

您的字符串扩展到

svn commit -m first commit c:\a\svn\projectwc
而你需要这样做

svn commit -m "first commit" c:\a\svn\projectwc
由于日志消息不止一个单词,因此需要加引号

我认为你应该重新思考你在这里想要实现的目标。从安全角度来看,基于用户输入构造字符串并将其传递给
exec
是一个非常糟糕的主意

您还标记了post-Ortoise svn-如果从命令行调用TSVN,它会弹出GUI,这显然不适合服务器端

然后你还需要考虑其他因素,比如:

  • 发生错误时如何记录错误消息
  • Web服务器是否有足够的权限访问工作副本以执行这些操作
  • 在您的环境中调用“svn”是否可能

无论你想做什么,很可能有一些自由软件已经做到了。svn有一个webdav接口和一个用多种语言实现的API-这比使用
exec

定义“未工作”要安全得多。没有显示错误,但没有发生提交。如果我直接指定路径,提交可以工作,但在使用变量时不能。这个接口,在PHP中有一个SVN的pecl扩展,但问题是处理请求并将其安装到系统中需要大约2到3天的时间(我在一家软件公司做这件事,所以他们有防火墙等等)。但要在这之前完成它,我会使用命令行SVN。这是一个学校项目,所以我不必担心安全性。检查它是否正常:
echo$cmd另请参见我在您的提交消息周围添加了引号。