先确认php是否真装上了:wsl2默认不带php,需手动执行sudo apt install php-cli等扩展包,php -v报command not found主因是未安装或安装失败,而非仅路径问题。

php -v 报 command not found?先确认 PHP 是否真装上了
这不是路径问题,而是根本没装成功。WSL2 默认不带 PHP,apt install php 装的可能是旧版(Ubuntu 22.04 默认是 PHP 8.1),Ubuntu 24.04 默认是 PHP 8.3,但都得手动装,不是开箱即用。
- 运行
wsl -l -v确认发行版在 Running 状态且 VERSION 是 2 - 进 WSL2 终端,执行
sudo apt update && sudo apt install php-cli php-mbstring php-xml php-zip php-curl(Laravel 类项目必须这五个扩展) - 装完立刻验证:
php -v和which php—— 后者应返回/usr/bin/php,否则说明装失败或 PATH 没刷新,执行hash -r清缓存再试
脚本执行卡在 mbstring 或 zip 扩展缺失?别跳过扩展安装
PHP CLI 运行脚本时如果报 Class 'ZipArchive' not found 或 mb_strlen(): Unknown encoding "UTF-8",不是代码问题,是扩展没启。Ubuntu 的 php 包只是元包,真正功能靠扩展包提供,且不会自动启用。
- 扩展名和包名严格对应:比如要
mbstring,就得装php-mbstring,而不是php8.3-mbstring(后者只在你手动加了 Ondřej PPA 后才有效) - 装完扩展后无需手动改
php.ini—— Ubuntu 的php-cli配置目录是/etc/php/*/cli/conf.d/,扩展包会自动写20-mbstring.ini这类文件 - 验证是否生效:
php -m | grep -E 'mbstring|zip|curl',有输出才算真加载
php script.php 执行但浏览器打不开?别混淆 CLI 和 Web 模式
WSL2 里 php script.php 是命令行模式,输出直接回显到终端;想用浏览器访问,必须启动 Web 服务——不能双击、不能拖进浏览器、也不能指望 Windows 的 XAMPP 自动接管 WSL2 文件。
- 快速测试用内置服务器:
php -S localhost:8000(当前目录为 Web 根),然后在 Windows 浏览器里打开http://localhost:8000/script.php - 若需路由控制,建一个
router.php,内容如return false;,再运行php -S localhost:8000 router.php - 绝对不要把项目放
/mnt/c/Users/xxx/project下跑内置服务器——文件锁和 realpath() 行为异常,php -S可能静默崩溃或 404
VS Code 调试断点不触发?关键在“谁在执行 PHP”
VS Code 默认调用的是 Windows 的 php.exe,哪怕你装了 Remote-WSL 插件,只要没在 WSL2 上下文中打开项目,调试器就永远连不到 WSL2 的 PHP 进程。
- 必须用
Ctrl+Shift+P → Remote-WSL: New Window,地址栏显示WSL: Ubuntu才算真正进入 WSL2 环境 - 在该窗口里打开项目路径要是
/home/yourname/projects/myapp,不是\wsl$\Ubuntu\home\...\(这是 Windows 文件协议,绕过了 WSL2 文件系统) - 进设置 JSON 加一行:
"php.executablePath": "/usr/bin/php",否则 Intelephense 提示和 Debug 断点全错位
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











