PHP调用Linux本地命令更新SVN
为了方便PHP开发人员更新SVN代码到服务器,而无须每次让系统管理员通过svn帐户手动登录远程服务器更新代码,只需要作一个调用svn命令的php页,放到网站上,有一个网址可以访问,如 www.mywebsite.com/svn/svn.php
php代码:
header("Cache-Control:no-cache,must-revalidate");
echo "Begin SVN update >>>";
$handle1 = popen('sudo svn up /server/webroot/app/application/ --username=user --password=mypasswd', 'r');
$read1 = stream_get_contents($handle1);
echo "
";
printf($read1);
echo "
";pclose($handle1);
exec('sudo chown -Rf www:www /server/webroot/app/application/ ');
exec('sudo chmod u+rwx /server/webroot/app/application/ -Rf
');
echo "End of SVN updates.";
?>
前提是首先在/server/webroot/app/application/出检出代码,如
svn checkout --username=user --password=mypasswd https://xxx.xxx.xxx.xxx/svn/project/code/
值得注意的是,一般php部署在apache httpd或者nginx下,通过url访问这个svn.php的执行权限是www,这样首先www用户没有权限使用svn命令,就需要添加一个sudo权限给www,然后在svn更新完代码后,修改文件夹的权限,如上面的:
exec('sudo chown -Rf www:www /server/webroot/app/application/ ');
通过如上设置,就达到了通过url自动更新代码到服务器端的效果。