Php 为什么在testserver上开发不好?

Php 为什么在testserver上开发不好?,php,testing,xampp,environment,Php,Testing,Xampp,Environment,在我们目前的项目中,我们有1。一个生产服务器,2。一个测试服务器和3。一些开发人员在Windows下使用xampp。Prod和Testserver由UNIX运行 另一个开发人员反复抱怨我们在windows下使用xampp。他说我们应该在测试环境中创建一个用于开发目的的v-server(可能每个开发人员有一个v-server,我不太清楚)。对我来说,这感觉完全错了。但是我不能真正解释为什么,除了一些明显的原因,比如你必须连接到远程开发服务器等等。以下是我的做法。分为4个阶段 1) 本地服务器。在这

在我们目前的项目中,我们有1。一个生产服务器,2。一个测试服务器和3。一些开发人员在Windows下使用xampp。Prod和Testserver由UNIX运行


另一个开发人员反复抱怨我们在windows下使用xampp。他说我们应该在测试环境中创建一个用于开发目的的v-server(可能每个开发人员有一个v-server,我不太清楚)。对我来说,这感觉完全错了。但是我不能真正解释为什么,除了一些明显的原因,比如你必须连接到远程开发服务器等等。

以下是我的做法。分为4个阶段

1) 本地服务器。在这里,您可以处理自己的更改、功能分支等。完成您的工作,确保它在您的机器上工作,然后请求将其拉入开发分支

2) 开发服务器。这是开发分支中所有内容的复写本,用于查看您的代码是如何a)在实际环境中工作的,以及b)如何使用其他人的代码

3) “测试服务器”,这是进行QA的地方。此服务器上的设置应尽可能接近生产环境中的设置。并允许所有的错误修复,功能和改进,你一直在工作中被检查,要么解决或报告回来


4) 生产。当代码出现在这里时,它应该是稳定的,并且可以运行。这应该是客户端的“最终产品”(即使您仍在修复bug/进行维护)

管理专用开发环境的一个好处是,您可以实现自动构建过程,定期重新部署开发服务器。这增加了在开发周期的早期发现不兼容更改的可能性。

如果环境的配置都尽可能相似,那么在环境之间移动时(开发人员要进行测试才能使用),您就不太可能感到意外

与在基于Unix/Linux的服务器上运行PHP相比,在Windows下通过XAMPP运行PHP将导致行为上的细微差异。必须处理这些问题会给您的开发增加不必要的开销,并增加错误没有很快被发现的风险

在办公室中运行虚拟服务器允许您继续使用Windows桌面,但即使在编写代码时,也可以在生产服务器的精确模拟上运行代码。它还可以简化系统管理员的工作,因为当您需要升级PHP、设置备份等时,他们不必管理大量单独的PC


至于不便之处,如果您使用“samba”,这也没什么大不了的——开发服务器上的文件可以作为Windows文件共享访问,因此您可以像在自己的机器上一样继续编辑它们。几乎只有在更改Apache配置并需要重新启动/重新加载守护进程以使更改生效时,才需要直接(通过SSH)连接到服务器。

对于步骤2,这实际上是有意义的。我们目前缺少一个开发服务器。谢谢但基本原则是什么?安全性、稳定性……?Alex Hart在这里所指的“开发服务器”大致上就是所谓的“持续集成”,这意味着使用工具来自动化测试构建、运行单元测试、更新自动化文档等。好的,这对于我们正在尝试做的事情来说可能有点太高级了。@WebnetMobile.com我们很乐意,但他站在客户一边。我同意最好是在本地安装,主要是为了减少延迟,以确保一个用户不会覆盖其他用户的工作,当然也可以脱机工作。总而言之,如果他站在客户一边,你可能需要帮助他,就像他自己就是客户一样。为他的“本地”开发人员设置一个单独的测试安装应该很容易,但是让他(和客户)知道缺点。“应该很容易”-是的,你不知道应用程序。他自己“开发”了它,忽略了所有的最佳实践,从不使用分支、复制粘贴代码、硬编码密码等。他尽最大努力确保这件事只在prod服务器上有效,而不在其他任何地方。但这是另一个故事;)@user1673524:哎哟;这让我想起了一位前同事!你的问题更多的是外交/管理问题,而不是其他问题;您需要召开一次会议来提高应用程序的弹性,并与他的直线经理商定一份基本标准文档。如果您可以进行一些单元或功能测试,以非判断的方式检查每个人的工作质量,那就更好了。(旁白:别忘了用[at]用户名打电话给这里的人——我碰巧听到你的回复。)@halfer他56岁,相当固执。在咨询我们之前,他只是在开发生产服务器。考虑到应用程序处理极为敏感的数据(个人信息等),我们必须首先改变这一点。但他不明白为什么。我们用外交的方式尝试过,现在我有点从头开始编写新的东西。好吧,这可能不是个坏主意。唯一的问题是,我们希望能够离线开发。@shnoop“离线”是什么意思?您是否正在使用笔记本电脑并希望能够在办公室之外使用它们,或者您是否假设开发服务器将位于远程数据中心?开发服务器通常位于办公室的一角,直接连接到局域网,而不是互联网。