确认php@8.0是否已安装需运行brew list | grep php@查看输出,若无则执行brew install php@8.0;切换CLI版本须先brew unlink php再brew link --force php@8.0,并单独重启PHP-FPM服务以同步Web环境。

确认 php@8.0 是否已安装
Homebrew 不会自动列出带 @ 符号的版本,直接 brew list 看不到 php@8.0。必须手动过滤:
- 运行
brew list | grep php@,检查输出中是否有php@8.0 - 若无,先执行
brew install php@8.0(注意:Homebrew 官方源已移除 5.6 及更老版本,但php@8.0仍可装) - 安装路径取决于芯片:Apple Silicon 是
/opt/homebrew/opt/php@8.0/bin/php,Intel 是/usr/local/opt/php@8.0/bin/php
用 brew unlink + brew link --force 切换 CLI 默认版本
这是最轻量、不改 shell 配置、不影响其他终端的方式,但必须两步都做全:
- 先断开当前所有 PHP 链接:
brew unlink php(不是php@8.0) - 再强制链接目标版本:
brew link --force php@8.0(--force不可省,否则报 “Linking is not permitted”) - 验证:
which php应返回/opt/homebrew/bin/php(Apple Silicon),且php -v显示PHP 8.0.x - ⚠️ 常见错误:
bash: /usr/local/bin/php: No such file or directory—— 说明unlink后没成功link,或权限/路径异常
PHP-FPM 不会自动同步,必须单独重启服务
CLI 切换和 Web 环境是两套逻辑:php -v 变了,phpinfo() 不一定变。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- PHP-FPM 是独立进程,配置与二进制绑定。必须运行:
brew services restart php@8.0 - 不要用
php@7.4的服务去跑php@8.0的代码——会直接拒绝启动或加载失败 - 检查当前生效的配置:
php --ini看Loaded Configuration File路径,确保你编辑的是这个php.ini - Apache 若用系统自带
libphp.so,它根本不认 Homebrew 的 PHP;建议统一用 Nginx + PHP-FPM 组合
扩展和配置不能跨版本复用
PHP 扩展(如 pdo_mysql、xdebug)是编译时绑定 ABI 版本的,混用必报错。
立即学习“PHP免费学习笔记(深入)”;
- 典型报错:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' - 原因:用了
php@8.0的php.ini,却加载了php@7.4编译的.so文件 - 每个版本扩展路径不同:
/opt/homebrew/lib/php/pecl/20200930/(8.0) vs/opt/homebrew/lib/php/pecl/20210902/(8.1) - 切换后应重新安装扩展:
pecl install xdebug(此时自动匹配当前php版本)
php.ini 里指向了旧版本目录**。这两处一漏,网页里就永远看不到 phpinfo() 显示 8.0。


















