1
zhs227 2016-01-24 18:35:08 +08:00 1
vagrant 统一打包和分发 box ,可以解决环境配置不统一的问题。每个人的调试也不会受到影响。
|
2
herozzm 2016-01-24 18:48:24 +08:00 via Android
统一丢一个 docker 如何?
|
3
chaegumi 2016-01-24 18:58:13 +08:00
开发环境随意了, upupw 文件比较小 xampp 文件比较大
|
4
wsn2009 OP |
6
hellojinjie 2016-01-24 19:10:06 +08:00
这事儿不应该由你们公司的 php 开发去想吗,为啥要你去想
|
7
imnpc 2016-01-24 19:12:29 +08:00
php 本地开发 建议 PHPSTUDY
上服务器修改是什么鬼... |
8
wsn2009 OP @yeyeye 其实是因为他们没有比较系统的学习开发,都是半路出家,然后代码质量很差 @hellojinjie 小公司开发不去想只能我去想顺便说一下,我其实是一个网管,貌似连网管都算不上,反正这事情交给我了
|
9
wsn2009 OP @imnpc 首先公司小,开发的开发技能不行,我记得之前老大让他们用 netbeans 了,但是最后还是 editplus ,因为本地没有开发环境(历史原因)
|
10
sunmonster 2016-01-24 19:18:36 +08:00
磨刀不误砍柴工,搞这搞那,还不如抽个一两个月去系统得学一下
|
11
xiqingongzi 2016-01-24 19:19:47 +08:00 via Android
为啥不搞持续集成环境。
跑 php 为啥不用*nix |
12
wsn2009 OP @sunmonster 我也没能力说动他们(搞不好还给我来个你 TMD 才来公司多久就敢对我指手画脚),公司也不辞退他们,所以我只能改变自己,还有希望大虾给点有意义的建议,谢谢,因为这种愤怒我一直都有,但是没有任何效益,她们(她们,对,就是她们)都指望我去弄,然后她们用
|
13
wsn2009 OP @xiqingongzi 请问适合 php 的持续集成环境具体包括哪些软件, putty 她们恨不得都不用,连服务器都是用 winscp 然后通过 editplus 编辑,更别说给他们一个 linux 的桌面系统了
|
14
xiqingongzi 2016-01-24 19:30:05 +08:00
|
15
shiny 2016-01-24 19:32:57 +08:00
一般调试就 var_dump/print_r 就行了,实在不行上 xdebug 扩展(情况比较少)
|
16
function007 2016-01-24 19:36:36 +08:00
@shiny 情况比较少什么鬼, xdebug 好用的一逼啊,能下断点还用啥 var_dump
|
17
elvba 2016-01-24 19:38:05 +08:00
目前公司线上是用 docker ,开发环境看个人,用 docker , vagrant , phpstudy , xampp , wamp …… 的都有
|
18
wsn2009 OP @xiqingongzi 谢谢分享的文档,一会儿我看看; @shiny 大虾说的两个东西我都不知道诶,都没见过她们用过,目前貌似我听说我们的程序员是在 php 中写一个 die 啥的调试,哎,说来惭愧啊; @function007 您说的这个 xdebug 是要安装在哪里吗? @elvba 大哥,请问你们开发 PHP 用啥软件撒,或者说能够配合开发、测试的一些工具呢
|
19
loadingimg 2016-01-24 19:48:01 +08:00
xampp
|
20
mahone3297 2016-01-24 19:54:46 +08:00
docker
|
21
elvba 2016-01-24 19:54:58 +08:00
@wsn2009 开发用的编辑器的话…… vim 、 sublime 都在用, IDE 的话 phpstorm 最佳不用多考虑,配合开发和测试的工具的话,各种抓包软件, xdebug , phpunit ……
|
22
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 版本,路径用各自的 |
23
Felldeadbird 2016-01-24 20:00:25 +08:00 via iPhone
她们…全是女?
先统一 php 版本。目前最低应该使用 5.4 。网上找集成包给她们统一部署环境。 接着部署 git ,就是版本库。不懂的话去开源中国注册一个 git 。然后搞个私有库,给她们加入组。 其次,每次修改让他们推送到版本库。楼主就负责导出她们的修改,再更新到服务器。楼主会自动部署就可以省去这步。 |
24
bk201 2016-01-24 20:03:22 +08:00
又关语言什么事情。
|
25
wsn2009 OP @f845952804 @mahone3297 @elvba @function007 @Felldeadbird 感谢各位的帮助,现在我已经接收刀很多有用的东西,接下来我应该整理一下然后看看哪个更适合我,谢谢各位,谢谢所有回答的朋友!
|
26
bobchengbin 2016-01-24 20:15:35 +08:00 2
推荐
Docker ,说下我现在的架构大约是这样的: Docker 做环境的统一,按自己的环境生成镜像,然后放到 DaoCloud 或 云雀之类的私有镜像存储里, 开发者在本地拉取镜像、 PHP 代码,把代码目录映射到运行的容器里面去,来实现在本地的测试,数据库什么的也都在本地运行, Docker 运行一个服务占用的资源比较少,已经可以完全模拟出现上的环境了。 学习 Docker 刚开始可能会有一定的成本,但绝对是值得的,亲身实验!(我都是使用 *nix 系,如果是 windows 的就不清楚了,貌似还会遇到一些坑) |
27
shiny 2016-01-24 20:19:14 +08:00
@function007 哪需要这么麻烦,一个 var_dump 基本能解决我绝大多数情况。而且用的编辑器也是轻量级的,不像 PHPStorm 一样带断点。
|
28
feiyuanqiu 2016-01-24 20:20:46 +08:00 5
说点题外话吧,作为小公司初级工程师对这种小作坊式的开发有些看法:
首先,至少要找(一个)技术能力强力的人进来,不能指望一群根本没跳出过井口的青蛙干出什么厉害的事情,庸人聚在一起永远都是庸人,有个厉害的人带领才能才能知道事情该怎么做,才能找准努力的方向 其次,开发人员水平不行就更应该把管理弄严格点,规矩定细点,比如: 1 、统一代码格式,统一用同一种 IDE ,统一 php 版本,统一代码管理工具,统一工作流,如果可能,再加上强制要求单元测试覆盖率 2 、定期 code review ,每周定个时间让团队成员轮流去讲自己写的某个功能的代码,一行行地讲,大家来找茬,并定奖惩机制,影响职位薪资调整。这也是招个小牛进团队的好处,他可以在这时候可以用活生生的例子教育团队什么是不好的代码,正确的代码应该是什么样子的,有助于提高整体的代码质量 3 、需求开发前大家先开会讨论把需求分解清楚,需求要求干什么事,实现的难点在哪里,该怎么做,最终要得到一个什么结果,都在需求里备注清楚,让做的人有个清楚的思路,不至于自己天马行空乱来;开发时最好找个好点的框架,并把大部分通用数据操作都封装死,普通开发人员让他只用写逻辑代码就行,提交代码前最好把单元测试也写了,开发人员写单元测试的时候可以检查代码实现是否符合需求,并保证提交至少正流程能跑通,减少测试工作量及返工修改的时间浪费 4 、每天早上开站会, 10 分钟左右,每个人讲自己昨天干了些什么,今天准备干什么,遇到了什么问题,方便成员之间了解开发进度并及时处理会影响需求交付进度的问题 5 、一段开发结束后开总结会,总结开发过程中得失,做得好的方面和做得差的方面,怎么改进,记录总结出来的缺点,下期总结时回顾有没有把这些问题解决掉,如果没有要搞清楚为什么没有解决。多总结多反思,培养团队成员的正确的开发思维,其实这些东西就是 scrum 开发流程罢了 |
29
yghack 2016-01-24 20:37:33 +08:00
vagrant
|
30
function007 2016-01-24 20:47:10 +08:00
@shiny 你确定哪一个是麻烦了吗
断点可以查看当前停顿处所有变量的值,可以在多个断点间前进、后退,可以使用调试器对停顿处的变量进行计算,以及调用 PHP 函数操作, PHPstorm 会对运行过程中的变量值改变在代码旁边全部进行标注,甚至可以使用浏览器插件一边在浏览器中访问一边在调试器中观察变量的变化情况。 xdebug 本身也会使 PHP 额外输出一些错误详情,还有对 var_dump 在浏览器中的输出进行格式化、高亮、附加标注等等。 基本上出现问题之后在关键地方下几个断点,结合调试器实时的变量计算,一轮就能明白问题出在哪儿, IDE 本身也就是拿来干这个的。现在能用 IDE 调试的东西我肯定不会去自己加代码调,在我看来到处插输出然后一遍一遍的执行、查看才是麻烦。 |
31
icybee 2016-01-24 21:08:21 +08:00
分线上机和测试机, jekins 上线, svn 版本管理
|
32
hjzx050935 2016-01-24 21:12:45 +08:00
我觉首先要统一一下思想吧,然后就是起码 php 版本和 mysql 版本用的都是一个吧。
然后在局域网搭一个测试环境,大家最后文件合上然后跑测试。。。。。 没问题就扔服务器上跑了哈哈哈哈 [如果大家不愿意用起来各种先进工具的话 |
33
rayyang88 2016-01-24 21:58:11 +08:00
vagrant 很赞
|
34
penjianfeng 2016-01-24 22:01:59 +08:00
@wsn2009 本地没有开发环境,这点我就已经跪了...
|
35
shiny 2016-01-24 22:24:43 +08:00
@function007 真的需要那么多功能吗?让人想起打印日志和单步跟踪的讨论 /t/49591
|
37
fasling 2016-01-24 22:40:39 +08:00
弄一个统一的安装包, 包含 dev 模式和 online 模式的,安装时可选.大家都统一用这个包.
至于 debug 的话,看各自喜好吧.有人喜欢用 xdebug,有人(比如我)喜欢打 log. |
38
mrliusg 2016-01-24 23:32:52 +08:00
自己带的团队用的 vagrant : https://github.com/mr-liusg/SCNUYouth_vagrant
|
39
shuson 2016-01-24 23:45:50 +08:00
个人用 vagrant
不过准备试试 docker |
40
siw 2016-01-24 23:56:43 +08:00
是不是我理解错误 代码需要在服务器才能改 ?
开发电脑没有代码? |
41
vinsony 2016-01-25 00:35:24 +08:00
@penjianfeng +1
|
42
eoo 2016-01-25 00:45:34 +08:00 via Android
@penjianfeng +1
|
43
ryancao 2016-01-25 01:05:18 +08:00 1
先回答题主的问题: PHP 代码需要调试吗?
答案是需要的,原生 PHP 代码单步调试一般用 xdebug 插件(个人认为用的多些)和 zend debuger 插件(Zend Studio 自带); PHP 扩展的话 GDB... 不过,目前为止见到 var_dump 的绝对占多数,从这方面也某种程度反应了国内团队的现状 不过,个人认为题主的问题其实跟语言关系不大。 :) 猜测题主想让现有团队更加规范,尝试简要回答下, 本地开发环境:因为 PHP 代码最终是需要在服务器上运行的,因此强烈建议在一开始就保持本地开发环境和最终服务器运行环境的统一(包括系统、数据库、 PHP 、部署方式等),这样可以避免很多环境不一致引起的问题。 关键词: Vagrant + Virtualbox + Ansible (没有历史负担也可以尝试 Docker),不推荐类 XAMPP 这样子的工具包 编辑器选择:其实这个是仁者见仁的问题,如果大家臭味相投的话统一最好,不过也没必要强制要求,只要大家最终编辑器 / IDE 输出的 PHP 代码遵循统一规范即可。关键词: PHP Document, PHP CodeSniffer ,代码必须遵循 PSR 标准是大势所趋, PHP Storm(好吧,想了下还是推荐下,自己折腾一段时间后现成的生产力工具还是更省心) 开发到部署流程:只要上面把好了关,这里遇到的问题会少很多,而且与其他语言差别并不大;关键词: 持续集成、持续交付, 本地编码(Vagrant/Docker) -> 版本管理(SVN/Git) -> 构建 (Jenkins/TravisCI/Phing) -> 测试 (PHP Unit) -> 部署 (Ansible/Puppet/Chef) 推荐阅读: PHP The Right Way : http://www.phptherightway.com/ Modern PHP: http://shop.oreilly.com/product/0636920033868.do (中文版: http://book.douban.com/subject/26635862/) PHP Best Practices : https://phpbestpractices.org/ |
44
longear 2016-01-25 04:11:45 +08:00
@wsn2009 你们公司的事故就是因为没有代码版本管理工具,出了问题不能回滚到之前正常的版本造成的, 开发环境都不是什么问题,你们公司只能选择上 Git ,先不用管其他的。
|
45
zonzin 2016-01-25 05:29:48 +08:00 via Android
这都不会还当网管,不知道是怎么进去的,还招人吗?。
你说的这个上面别人都讲了,但估计不好实现。 现实的方法是全在本地做,内网里架个 SVN 服务器,每个人的机器上装 phpstudy. |
46
zonzin 2016-01-25 05:33:53 +08:00 via Android
估计是 SB 领导怕代码泄露了,遇到过这样疑神疑鬼只会吹 NB 的人
|
47
wsn2009 OP @ryancao 其实看过上面大家的回答我基本上整理出了一个思路,和您现在给我的建议差不多,谢谢,因为你的回答让我更加确定我的想法可行,那么接下来我就准备开干了
|
48
Admstor 2016-01-25 09:02:34 +08:00
作为运维并不推荐 phpstudy 这类集成环境
调试还是建议内网上一台完全和线上环境一样的服务器最好,即便版本一样,配置参数还是会千差万别 尤其是开发环境在安全参数上面和线上环境是有差异的 开发在赶工的时候你并不会知道他可能会使用什么暴力的实现,这里就需要稍微给点限制了 |
49
Moker 2016-01-25 09:09:04 +08:00
同楼上, win 下用集成环境 会有不少坑
|
50
Yuansir 2016-01-25 09:31:02 +08:00
vagrant
|
52
cai314494687 2016-01-25 10:06:45 +08:00
*nix 系的推荐使用 Docker , Windows 还是老老实实用 vagrant 吧
|
53
tabris17 2016-01-25 10:19:03 +08:00
vagrant 比 docker 适用场景更广泛
|
54
Jefei 2016-01-25 10:20:13 +08:00
欢迎试用我的 docker 环境 https://github.com/JanfyLiu/
|
55
Jefei 2016-01-25 10:21:26 +08:00
|
56
hqs123 2016-01-25 10:25:58 +08:00
不错,我也来学习下
|
57
codingpp 2016-01-25 10:38:16 +08:00
哪里都 docker docker 的烦不烦,装 b 用吧,真用起来给自己找麻烦
|
58
codingpp 2016-01-25 10:39:09 +08:00
一个一键安装包 丢过去
|
59
pizida 2016-01-25 10:52:41 +08:00
@function007 用 nginx 每人绑定一个目录,配 host 是可以的,那请问每个人开发完后,如何推送到主线?主线也是个测试环境,运营和开发都会使用的。
|
60
moro 2016-01-25 11:01:54 +08:00
windows 本地环境 wamp 还可以,支持各种版本切换。
代码需要有版本管理工具(svn/git,看开发人员熟悉程度来选择)来维护,本地需要有测试环境,测试环境要和线上环境一致。 代码先本地环境通过,提交测试环境,测试通过,在提交到线上环境。 代码部署通过版本管理工具来进行,确保代码一致性,出现问题可以及时回滚。 调试可以在本地环境和测试环境进行。 |
62
jarlyyn 2016-01-25 11:25:15 +08:00
另外
别挂 samba 了,开 ssh 吧,不然你让他们怎么跑测试。 |
64
hantsy 2016-01-25 11:31:53 +08:00
Docker , Vagrant
|
65
hantsy 2016-01-25 11:33:57 +08:00
@shuson 目前我正在尝试所有开发环境 Vagrant 里面跑 Docker , Windows 的 Docker Toolbox 太坑了。
|
67
hantsy 2016-01-25 11:37:14 +08:00
@wsn2009 PHP 的原生环境是 Linux ,我觉得还是必须是 Linux 兼容环境来做 PHP 开发。有些 IDE , Editor 是支持远程直接打开文件编辑的,保存就会立即上传。
|
68
konakona 2016-01-25 11:54:47 +08:00
软件包啊,集成包啊!
现在谁还一个一个装...准出问题系列。 |
69
mko0okmko0 2016-01-25 12:08:25 +08:00
如果你编写 php 的桌面是 windows 的,推荐一个编辑软体:CodelobsterPHPEdition,
他的基本功能免费,有付费外挂,安装前注意看勾选列表,付费的不要装,装了会很烦,一直要钱. 免费序号申请一个帐号就有了.可以一直用, 有彩色代码(还可自订色彩), 自动补码, 变数提示, debug 扩展连动 php 直接提示哪里错误, 热键排版(ctrl+alt+F)=看得爽. 还支持 html(文字编辑没有视觉化),js,css,xml,json 编辑. 理论上用线上的服务器,用远程编辑是很不错的,但应该上线前想办法不要跟已上线版本混再一起.应该开独立目录挂上独立前缀网址去测试(www.your.com->test.your.com),并将此前缀设为内网或特定外部 IP 才能开启. 资料库也弄一个复制的资料库去玩. 上传保留的文件也是,不要跟在线的上传资料夹混一起.假如上传资料夹是 upfile,就弄一个 upfile_test 资料夹. 这样基本上测试环境跟真实上线环境就非常统一了. 如果想要离线单独开发,需要自己架设一个测试环境, windows 下用 iis 搭配 PHPManagerForIIS 是非常方便的,可依照目录设定给予不同版本 php,切换版本也是动动滑鼠秒切换. 或是公司用 apache 你就用 apache,用 nginx 就装 nginx,版本和参数尽量相同(直接复制公司主机的参数档嘿嘿嘿).然后找出 hosts 档案将 www.your.com 对应 IP 改成 127.0.0.1 就可单机开发,但改 hosts 将失去看公司真实网址的能力,因为被引导到你的单机环境了. 虽然我是架设 linux 跑 nginx,但我开发是在 win7 用 iis.所以 linux 下的推荐编辑器就不熟了. |
70
iCantus 2016-01-25 13:15:07 +08:00
开发工具 zendstudio ,版本控制: git or svn 需要两个服务,一个服务提交到测试版,一个服务从测试版提交到正式版,两个服务都要设置钩子,用于代码同步到 web 环境中。
|
71
huobazi 2016-01-25 13:23:09 +08:00
这不该是你领导搞定的么?
|
72
66beta 2016-01-25 14:00:11 +08:00
持续开发跨太大,扯到蛋
上 docker 吧,分发一下 另外,我觉得楼主公司是缺少一个 UAT (预生产)环境,有没有专门的测试人员吧。。。 |
73
function007 2016-01-25 15:23:57 +08:00
@pizida 主线用 git 一类的版本控制。那玩意肯定不能像每个人的测试路径一样想改就改,得考虑多人编辑的时候的一个冲突问题。
场景就是大家先从私有分支( github 买也行,自己搭也行) clone 代码下来,配置好 PHPstorm 的远程 PHP 测试环境,然后修改、在各自的远程路径里边测试,当他负责的功能在本地测试的差不多之后把 commit 全部 push 上主线。 至于主线修改的效果预览,可以靠 git 的 web hook ,在代码出现变动的时候通知测试服务器更新一下代码。开发 push 完刷新一下主线绑定的测试域名就能看到效果了。 |
74
wclssdn 2016-01-25 16:00:19 +08:00
v2ex 上用户这么活跃?
环境的话,一般都是生产环境(集群)、仿真环境(生产环境一致,数据定期同步,通过测试的代码才能上到这里)、测试环境(可提交代码进行测试的环境)、开发环境(一般为一个 linux 虚拟机,给开发同学开帐号即可) |
75
tinyproxy 2016-01-26 01:38:47 +08:00 via iPhone
|
76
miaotaizi 2016-01-26 09:33:36 +08:00
vagrant
git phpstorm xdebug |
77
pizida 2016-01-27 09:38:29 +08:00
@function007 感谢你的回答。我大致也是这么想的。以前用过远程调试,不过现在这公司大家都没用到。
|
78
1040063186 2019-07-29 18:53:56 +08:00
Windows 上开发我用 phpenv.cn ,phpenv 主打开发环境,开发用起来超级爽。
|