各位大侠主要是 PHP 码农,请问贵公司是如何搭建 PHP 开发环境的,谢谢给出建议(在线等)

2016-01-24 18:31:36 +08:00
 wsn2009
背景:开发人员的开发环境不统一加上沟通不畅经常测试有冲突,想给他们搞一个开发环境统一起来
疑问:但是 PHP 我一点都不懂,只是懂点 Java 知道 myeclipse 可以有有调试模式,不知道 PHP 代码需要调试吗?我是想着在内网搭建一个 lamp 环境,然后通过 samba 挂在刀每个开发的本地各自开发,但是这样的话会影响调试吗,虽然我都没见过他们调试,老大说为了以后着想,请各位有 PHP 经验的不吝赐教,在线等,我身边的同学都是 android 或者 Java 貌似没啥参考意义,谢谢啦
9799 次点击
所在节点    PHP
78 条回复
elvba
2016-01-24 19:54:58 +08:00
@wsn2009 开发用的编辑器的话…… vim 、 sublime 都在用, IDE 的话 phpstorm 最佳不用多考虑,配合开发和测试的工具的话,各种抓包软件, xdebug , phpunit ……
function007
2016-01-24 19:59:29 +08:00
@wsn2009 xdebug 是服务器上的
yum install -y gcc gcc-c++ autoconf automake
pear config-set php_ini /etc/php.ini
pecl install Xdebug

我是用 SSH 做的端口映射,把本机端口映射到了远程,然后本机用 PHPstorm 在调试。你是内网服务器的话连映射都省了,直接设置为使用请求 IP 就行。 xdebug 貌似是支持多人调试的。

Nginx 可以给每个人配个目录然后绑个域名, PHPstorm 里共用一个远程的 PHP 版本,路径用各自的
Felldeadbird
2016-01-24 20:00:25 +08:00
她们…全是女?
先统一 php 版本。目前最低应该使用 5.4 。网上找集成包给她们统一部署环境。
接着部署 git ,就是版本库。不懂的话去开源中国注册一个 git 。然后搞个私有库,给她们加入组。
其次,每次修改让他们推送到版本库。楼主就负责导出她们的修改,再更新到服务器。楼主会自动部署就可以省去这步。
bk201
2016-01-24 20:03:22 +08:00
又关语言什么事情。
wsn2009
2016-01-24 20:06:34 +08:00
@f845952804 @mahone3297 @elvba @function007 @Felldeadbird 感谢各位的帮助,现在我已经接收刀很多有用的东西,接下来我应该整理一下然后看看哪个更适合我,谢谢各位,谢谢所有回答的朋友!
bobchengbin
2016-01-24 20:15:35 +08:00
推荐
Docker ,说下我现在的架构大约是这样的:

Docker 做环境的统一,按自己的环境生成镜像,然后放到 DaoCloud 或 云雀之类的私有镜像存储里, 开发者在本地拉取镜像、 PHP 代码,把代码目录映射到运行的容器里面去,来实现在本地的测试,数据库什么的也都在本地运行, Docker 运行一个服务占用的资源比较少,已经可以完全模拟出现上的环境了。

学习 Docker 刚开始可能会有一定的成本,但绝对是值得的,亲身实验!(我都是使用 *nix 系,如果是 windows 的就不清楚了,貌似还会遇到一些坑)
shiny
2016-01-24 20:19:14 +08:00
@function007 哪需要这么麻烦,一个 var_dump 基本能解决我绝大多数情况。而且用的编辑器也是轻量级的,不像 PHPStorm 一样带断点。
feiyuanqiu
2016-01-24 20:20:46 +08:00
说点题外话吧,作为小公司初级工程师对这种小作坊式的开发有些看法:

首先,至少要找(一个)技术能力强力的人进来,不能指望一群根本没跳出过井口的青蛙干出什么厉害的事情,庸人聚在一起永远都是庸人,有个厉害的人带领才能才能知道事情该怎么做,才能找准努力的方向

其次,开发人员水平不行就更应该把管理弄严格点,规矩定细点,比如:
1 、统一代码格式,统一用同一种 IDE ,统一 php 版本,统一代码管理工具,统一工作流,如果可能,再加上强制要求单元测试覆盖率
2 、定期 code review ,每周定个时间让团队成员轮流去讲自己写的某个功能的代码,一行行地讲,大家来找茬,并定奖惩机制,影响职位薪资调整。这也是招个小牛进团队的好处,他可以在这时候可以用活生生的例子教育团队什么是不好的代码,正确的代码应该是什么样子的,有助于提高整体的代码质量
3 、需求开发前大家先开会讨论把需求分解清楚,需求要求干什么事,实现的难点在哪里,该怎么做,最终要得到一个什么结果,都在需求里备注清楚,让做的人有个清楚的思路,不至于自己天马行空乱来;开发时最好找个好点的框架,并把大部分通用数据操作都封装死,普通开发人员让他只用写逻辑代码就行,提交代码前最好把单元测试也写了,开发人员写单元测试的时候可以检查代码实现是否符合需求,并保证提交至少正流程能跑通,减少测试工作量及返工修改的时间浪费
4 、每天早上开站会, 10 分钟左右,每个人讲自己昨天干了些什么,今天准备干什么,遇到了什么问题,方便成员之间了解开发进度并及时处理会影响需求交付进度的问题
5 、一段开发结束后开总结会,总结开发过程中得失,做得好的方面和做得差的方面,怎么改进,记录总结出来的缺点,下期总结时回顾有没有把这些问题解决掉,如果没有要搞清楚为什么没有解决。多总结多反思,培养团队成员的正确的开发思维,其实这些东西就是 scrum 开发流程罢了
yghack
2016-01-24 20:37:33 +08:00
vagrant
function007
2016-01-24 20:47:10 +08:00
@shiny 你确定哪一个是麻烦了吗

断点可以查看当前停顿处所有变量的值,可以在多个断点间前进、后退,可以使用调试器对停顿处的变量进行计算,以及调用 PHP 函数操作, PHPstorm 会对运行过程中的变量值改变在代码旁边全部进行标注,甚至可以使用浏览器插件一边在浏览器中访问一边在调试器中观察变量的变化情况。 xdebug 本身也会使 PHP 额外输出一些错误详情,还有对 var_dump 在浏览器中的输出进行格式化、高亮、附加标注等等。

基本上出现问题之后在关键地方下几个断点,结合调试器实时的变量计算,一轮就能明白问题出在哪儿, IDE 本身也就是拿来干这个的。现在能用 IDE 调试的东西我肯定不会去自己加代码调,在我看来到处插输出然后一遍一遍的执行、查看才是麻烦。
icybee
2016-01-24 21:08:21 +08:00
分线上机和测试机, jekins 上线, svn 版本管理
hjzx050935
2016-01-24 21:12:45 +08:00
我觉首先要统一一下思想吧,然后就是起码 php 版本和 mysql 版本用的都是一个吧。

然后在局域网搭一个测试环境,大家最后文件合上然后跑测试。。。。。

没问题就扔服务器上跑了哈哈哈哈

[如果大家不愿意用起来各种先进工具的话
rayyang88
2016-01-24 21:58:11 +08:00
vagrant 很赞
penjianfeng
2016-01-24 22:01:59 +08:00
@wsn2009 本地没有开发环境,这点我就已经跪了...
shiny
2016-01-24 22:24:43 +08:00
@function007 真的需要那么多功能吗?让人想起打印日志和单步跟踪的讨论 /t/49591
micookie
2016-01-24 22:34:01 +08:00
@wsn2009 @bk201 对、我也是这么觉着,,, java 难道不用 svn 、 git 代码管理吗
fasling
2016-01-24 22:40:39 +08:00
弄一个统一的安装包, 包含 dev 模式和 online 模式的,安装时可选.大家都统一用这个包.
至于 debug 的话,看各自喜好吧.有人喜欢用 xdebug,有人(比如我)喜欢打 log.
mrliusg
2016-01-24 23:32:52 +08:00
自己带的团队用的 vagrant : https://github.com/mr-liusg/SCNUYouth_vagrant
shuson
2016-01-24 23:45:50 +08:00
个人用 vagrant
不过准备试试 docker
siw
2016-01-24 23:56:43 +08:00
是不是我理解错误 代码需要在服务器才能改 ?
开发电脑没有代码?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/253045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX