开发了一个简单的项目文档管理系统,方便管理项目中的文档。php
须要php将提交的文档同步到svn库中,因而把add命令,commit写入到一个shell中,而后php执行shellshell
没想象的那么容易,遇到了几个坑apache
1 add命令容易出现重复添加的错误,比较好的执行是服务器
svn st | grep ^? | awk '{print $2}' | xargs svn addsvn
2 由于须要php操做svn ,因此要把项目文件所属的组改成apache用户和其所在的组测试
sudo chown -R apache用户名 myproject
sudo chgrp -R apache所在的组 myproject.net
http://blog.csdn.net/liruxing1715/article/details/39205415这篇文章介绍如何查看apache所在的用户和组blog
3 php执行shell的方式有三种分别是system() exec() passthru()开发
我刚开始使用system() 这个真是个大坑,执行shell时,只执行第一条svn add死活执行不了svn commit ,我后来把svn add 和svn commit 放入两个shell中,调用两次system才成功。后来我想到exec,是试了试,exec能够完美执行一个shell,因此就使用exec执行了 文档
4 我另外一个功能是经过php update代码到测试服务器,老是出错,后来发现应该给整个项目目录更改用户和用户组,调用chown 就能够了