这两天,想必大家都已经刷到这个新闻了——「微软宣布Windows不再提供对PHP的官方支持」:
其实也不必惊慌,Windows只是不再对PHP8.0及后续版本提供Windows版PHP,在此之前的版本还可以放心使用,只是之前那种基于Windows版本的PHP集成开发环境需要为未来做好准备。
不过,在学院君这里,我一直给大家推荐的本地集成开发环境是Laradock,这种Docker镜像是基于Linux的,与Windows系统本身无关,所以不受这个支持的影响。
如果你没有使用Laradock的话,现在使用Windows官方提供的Linux虚拟机方案WSL来搭建本地PHP开发环境也可以很好地绕过这个限制,并且学院君认为这种基于Linux虚拟机的PHP环境比Windows版本的PHP功能更加强大,扩展性也更好:
首先,各种PHP扩展都是优先针对Linux系统开发、编译和使用的,Windows系统对应的扩展本身就会滞后,如果长期不支持,那就一直用不上这个扩展,比如之前的Redis扩展就是;另外,Windows系统自身的限制会导致某些PHP库函数无法调用,也从某种意义上削弱了Windows版PHP的功能,比如邮件发送相关的库函数就是如此;最后,我们的生产环境操作系统基本都是Linux的,如果以Windows作为本地开发环境,所有的代码、扩展、功能都要经过测试系统的严格测试才能上线,否则可能会有不同操作系统处理机制的不一致导致本地代码运行正常,而到了线上环境运行失败的尴尬场面。
所以这些年来,无数前浪相继在原生虚拟机、Vagrant、Docker等本地开发环境与线上生产环境一致性的解决方案上不断做出努力和迭代,如果到了年这个时间点上,还在为了不想改变、为了所谓的简单抱守Windows版本PHP开发环境做本地开发,然后每次上线都战战兢兢,或者为扩展问题不能在本地使用/测试某些功能,就有点不合时宜,与时代脱轨了。
所以从某种意义上说,Windows宣布官方不再支持PHP是件好事情,大家自己玩,能玩的更遛,这里,学院君给大家演示两种在Windows系统替代原生PHP搭建开发环境的解决方案。
一种是基于WSL虚拟机,一种是基于Laradock。首先,我们来看看如何基于WSL搭建PHP本地开发环境。
这里,学院君以自己的Windows10专业版操作系统为例作为演示平台。使用Windows10专业版的好处是对开发者友好,很多东西都可以原生支持,比如DockerDesktopforWindows,这样就不需要自己去折腾其他替代解决方案,如果你在使用Windows作为主力操作系统,推荐升级到Windows10专业版。
2、安装WSL版UbuntuWSL全名是WindowsSubsystemforLinux,即Windows中的Linux子系统,实际上这是一个与Windows系统高度整合的Linux虚拟机,极大简化了传统通过VirtualBox或者VMware等软件安装/启动虚拟机的流程和配置,上手即可使用,而且能够和本地宿主机系统高度兼容(共享文件系统、网络层、进程列表等)。
以PHP应用为例,无需配置端口映射即可直接访问WSL中运行的PHP项目,也可以直接在WSL中使用宿主机的某些软件,比如VisualStudioCode,通过它来编辑虚拟机配置文件,非常方便。
关于WSL的启用和初始化配置(我这里使用的是WSL2版本),可以参考Windows官方提供的相关文档:WindowsSubsystemforLinuxInstallationGuideforWindows10,执行完命令并重启系统后,在Windows商店搜索「Linux」并选择「Ubuntu18.04」发行版进行下载安装:
安装完成后就可以通过「启动」按钮启动这个Ubuntu虚拟机:
3、系统初始化在打开的虚拟机终端窗口中,你可以使用阿里巴巴提供的Ubuntu软件源镜像地址替代系统自带的地址来加速虚拟机的软件下载速度,具体步骤参考这篇教程的设置即可,注意要选择适用于Ubuntu18.04版本的配置来更新软件源。
然后运行如下命令更新并升级这个Ubuntu系统:
sudoaptupdatesudoaptupgrade4、安装PHP相关软件
接下来,我们可以完全使用这个Ubuntu虚拟机终端窗口作为本地开发环境的工作台(Workspace,打开速度很快,就像本地的终端工具一样),Windows自带的那些狗屎终端工具都可以扔掉了(命令行工具、Powershell、WindowsTerminal)。
首先,我们运行如下命令在虚拟机中安装PHP:
sudoaptinstallphpphp-mbstringphp-domphp-xmlphp-zipphp-curlphp-xdebug
我们安装了PHP核心,以及一些必要的扩展,然后安装Composer:
sudoaptinstall