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
Php 如何设置SVN存储库;“在飞行中”;以编程方式?_Php_Svn - Fatal编程技术网

Php 如何设置SVN存储库;“在飞行中”;以编程方式?

Php 如何设置SVN存储库;“在飞行中”;以编程方式?,php,svn,Php,Svn,我正在建立一个系统(基于PHP),它将允许用户立即提供一个SVN环境以供使用。这是一个内部项目,因此用户主要是内部用户 我根本不知道从哪里开始。PHP是否有SVN绑定,或者我必须使用SVNconsole命令?让它执行svnadmin create repo name来创建repo。我不认为有任何库用于此,因为您通常只能找到客户端SVN库 只是提出一个建议,“供应”Git回购要简单得多。由于客户端和服务器之间没有区别,所以通过git库()等进行处理非常简单。当然,您可能只想要SVN回购,但如果您有

我正在建立一个系统(基于PHP),它将允许用户立即提供一个SVN环境以供使用。这是一个内部项目,因此用户主要是内部用户


我根本不知道从哪里开始。PHP是否有SVN绑定,或者我必须使用
SVN
console命令?

让它执行
svnadmin create repo name
来创建repo。我不认为有任何库用于此,因为您通常只能找到客户端SVN库


只是提出一个建议,“供应”Git回购要简单得多。由于客户端和服务器之间没有区别,所以通过git库()等进行处理非常简单。当然,您可能只想要SVN回购,但如果您有选择,请选择git。

这里有一种可能性。你在这里要走几步。首先,您需要在PHP操作脚本中创建svn repo,可能类似于:

$name = $_REQUEST['name'];
// gonna need some sanity checking on $name here. no '..', no '/'s, etc
$cmd = 'svnadmin create ' . escapeshellarg('/var/svn/' . $name) . ' --fs-type fsfs';
exec('sudo ' . $cmd, $output, $exitValue);
if ($exitValue != 0) {
    // put the error message on the session, redirect out
}
$cmd = 'chown -R apache:apache ' . escapeshellarg('/var/svn/' . $name);
exec('sudo ' . $cmd, $output, $exitValue);
// error handling again
您需要设置sudo以允许web服务器运行svnadmin命令。然后需要在/etc/httpd/conf.d中插入一个新的apache.conf代码段:

<Location /$name>
   DAV svn
   SVNPath /var/svn/newproj
   #AuthType Basic
   #AuthName "SVN Repository"
   #AuthUserFile /var/svn/${name}.passwd
   #Require valid-user
</Location>

DAV svn
SVNPath/var/svn/newproj
#AuthType Basic
#AuthName“SVN存储库”
#AuthUserFile/var/svn/${name}.passwd
#需要有效用户

然后重新启动Apache。为了安全起见,也可以创建newproj htpasswd文件。确保检查并清理所有传递的表单值($\u请求)。希望这能让你开始。

+1回答得好。。。我克制住了对这个问题发表许多讽刺性评论/回答的冲动。如果你的sudo条目缺少NOPASSWD,我会的。