探讨一下 Windows 下 PHP 环境最优解

几种方案以及各自的优缺点

  • Windows 集成环境 (PhpStudy / PhpEnv 等)

    • 支持不完整 (部分PHP扩展不支持)
    • 更新不及时
  • WSL   (Windows Subsystem for Linux)

    • WSL 1: 好久没折腾了, 前两天测试发现连不上外网(没深究)
    • WSL 2: 始终避不开io性能问题
  • Hyper-V + Docker

    • 本来应该是最优解了, 最近版本更新后, 隔一段时间就会出现站点无法访问的问题~
  • 直接重装 Linux   N1f6M90TTS.png!large

最优解?

大佬们提提意见






本作品采用《CC 协议》,转载必须注明作者和本文链接
啪嗒啪嗒啪嗒 (`・ω・´)つ_▃ <?php echo "PHP is the best language in the world!"; ?>
Image
slowlyo
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 78
JaguarJack

Laragon,最优解 :speak_no_evil:

2年前 评论
Image JyPony 2年前
Image slowlyo (楼主) 2年前
Image JaguarJack (作者) 2年前
Image kindiaing 2年前

我浪费了几天时间最后果断换回黑苹果

2年前 评论
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image 臭鼬 (作者) 2年前
翟宇鑫

Windows 没有最优解,用啥都是小问题不断
非要选的话:WSL

2年前 评论
Image slowlyo (楼主) 2年前

换 mac :confused:

2年前 评论
Image slowlyo (楼主) 2年前

Windows 主要就是扩展问题,加扩展简单的简单(提供 dll 的直接下载),难的非常难(需要 VS2022 编译)。另外如果在 Windows 开发 CGI 应用需要依赖一个额外的web服务器,比如 IIS、EasyWebSvr。如果只开发 cli 程序或者使用内置 Server 那其实比 *nix 要简单很多的,官网下载即用。

另外一个重要的问题就是很多框架、组件、扩展虽然写明支持各种 PHP 版本,但是它可能没有在 Win32 上面的 PHP 测试过,甚至根本没有提供兼容 API。可能存在路径问题(比如典型的根目录问题和反斜杠问题)。这些可能不是 PHP 本身的问题,是大家都倾向 *nix 生态而设计导致的。毕竟 PHP 是一个更适合服务端运行的语言,特意去考虑在 Windows 上运行的人并不多。

如果一定要在 Windows 上 Win32 PHP 下开发 CLI、Web 程序,我觉得最好的方式就是直接使用兼容 Win32 环境的框架。除此之外,如果你开发的代码最终只会在 Linux 运行,也许 remote 开发或者虚拟机是更好的方案(WSL 在实际使用过程中有不少坑,短时间可能发现不了)。

另外插个眼,如果有大佬懂 Windows 的编译,可以帮忙完善下 Windows 静态编译 PHP 的支持,或许以后就直接下载一个 php.exe 本地开发就完事了。
github.com/crazywhalecc/static-php...

2年前 评论

没啥推荐的,你习惯用哪个就用哪个,单就开发而言,能完成工作就好。
你列举的四个方案,其实开发本质差别就2点。

  1. 系统环境,win和linux的区别,对开发的影响部分linux扩展在win下支持不太好,文件和目录名称大小写不敏感等。
  2. IO性能,虚拟挂载性能差些。

其他就是各类工具安装和使用差别,除了win集成环境外,剩下这些东西有一定的学习成本,简单快捷肯定是集成环境快。

2年前 评论

WSL2是一个不错的选择,不过人生苦短,我选择虚拟机,好处是可以完整使用,不像wsl有部分阉割,而且还可以统一系统环境,再不济还可以拷贝虚拟机

2年前 评论

只是自己开发测试无所谓,但生产用 Linux

2年前 评论

一直用宝塔

2年前 评论
Image Ailon 2年前

homestead 感觉还行 其他研究起来也费劲 或者轻量一点的虚拟机装宝塔

2年前 评论
Image kwok_wah 2年前
DonnyLiu

WSL太麻烦了,折腾起来人家用宝塔的都敲了两天代码了。现在在用宝塔,不过还是建议能用mac就用mac

2年前 评论

用虚拟机啊,Virtual Box免费的,在虚拟机上装Centos或者Ubuntu,然后挂载文件夹

2年前 评论
Image slowlyo (楼主) 2年前
Image 小煜 2年前
Image lovewei 2年前
Image 小煜 2年前

wsl2+docker

file

2年前 评论
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image ltaoo (作者) 2年前
Image ltaoo (作者) 2年前
Image ltaoo (作者) 2年前
Image ltaoo (作者) 2年前
sanders

用 docker

2年前 评论

UPUPW。支持php,java,.NET,不装IIS运行.NET网站,支持apache、nginx等环境。

2年前 评论
Junwind

vmware虚拟机 + vmware tools工具目录共享 + phpstorm

2年前 评论
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image lovewei 2年前
Image Junwind (作者) 2年前
Image Junwind (作者) 2年前
Image Junwind (作者) 2年前

wsl2 + docker
1.文件不映射到物理机 就可以避开io的问题 2.用vscode/ide 下的 直接直连容器开发功能 可以直接享受win的生态 Linux下的开发享受 :+1:

2年前 评论

你说的自动休眠问题 可以在如图所示的地方关闭

file

2年前 评论
Image slowlyo (楼主) 2年前
Image slowlyo (楼主) 2年前
Image Silly-dog (作者) 2年前

vmware + docker + phpstorm

2年前 评论

docker 如果你觉得不好用,可能你需要学习一下。

2年前 评论
Image slowlyo (楼主) 2年前

vm + docker + vscode远程开发 或者公司的电脑性能差点的是 wsl2 + docker + vscode容器内开发

2年前 评论

wsl2 + 宝塔, 项目放在 wsl2 的 /www/wwwroot 目录下, 写个脚本开机自动启动 wsl2. 用起来跟 hyper-v 安装虚拟机 samba 服务映射网络磁盘体感上没什么区别, 甚至 wsl2 更方便一点, 因为 windows 可以直接查看子系统的目录. 开发的话直接用编辑器打开子系统的目录就可以.

2年前 评论

直接装个php加一个mysql,多版本配置一下命令:php7 artisan serve 或者php8 artisan serve启动

2年前 评论

目前用的 wls2 ,ubuntu 中直接 apt 安装了几个 php 版本,项目启动使用 php-cli ,项目代码在 windows 目录,在 Ubuntu 中设置了软连接,目前没有发现 IO 问题

file

file

2年前 评论

file 必须这个

2年前 评论

WSL2为什么会有IO问题 :sweat_smile:。WSL2+Docker,用了几年了,没发现什么问题,什么操作系统问题、文件路径问题、大小写问题、多版本问题都不用担心了。墙裂推荐 :smirk:

2年前 评论
Image LXK 2年前
Image zhangrongwang (作者) 2年前

开发环境而已,无所谓

2年前 评论
skarner

Mac/Linux Docker

Windows WSL+Docker

2年前 评论

世间系统千千万,何必围着Windows转,考虑用MAC下的ServBay吧,帮你节省下的时间足够你去怀疑人生 :see_no_evil:

1年前 评论

Windows WSL2安装原生Docker和使用Docker Desk有区别吗

1年前 评论
Image slowlyo (楼主) 1年前

一直用的WSL2+docker engie,没有用docker 桌面版了,那个经常出问题,容器时不时的不启动。但是docker engine有个问题就是好像xdebug端口无法识别,9003之类的端口是开了的。但是在validate端口时一直404

1年前 评论

我是WSL + WSL里面的docker 没感觉有啥IO的问题

1年前 评论

我是用window的 phpstudy 和wsl;项目中没有不能用的扩展就phpstudy;有不能用的就用wsl; 预算充足还是mac吧;

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!