Homebrew安装PHP后php -v无响应是因PATH未包含/opt/homebrew/bin(M1/M2)或/usr/local/bin(Intel),需运行eval "$(/opt/homebrew/bin/brew shellenv)" >> ~/.zshrc并source ~/.zshrc;指定版本需用shivammathur/php/php@8.2等公式;扩展需手动编辑对应php.ini启用;Web服务须配置php-fpm,注意权限匹配。
mac 系统上用 Homebrew 安装 PHP 不是“一键”完事,brew install php 看似简单,但默认安装的是最新稳定版(比如 PHP 8.3),不自动配置环境变量、不启用扩展、不生成 php.ini,直接运行 php -v 可能仍指向系统自带的旧版(PHP 8.1 或更早),甚至报错“command not found”。
brew install php 后 php -v 没反应?Homebrew 安装的 PHP 二进制文件默认放在 /opt/homebrew/bin/php(Apple Silicon)或 /usr/local/bin/php(Intel),但 macOS 的 $PATH 默认不包含这些路径,shell 找不到它。
echo $PATH | grep homebrew(M1/M2)或
echo $PATH | grep local(Intel)
brew doctor 会提示你运行 echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc(M1/M2)或 echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc(Intel)source ~/.zshrc,再试 php -v
Homebrew 官方仓库只保留一个 php 公式(latest),老版本需通过 homebrew-php 社区仓库或使用 shivammathur/php tap —— 但后者已归档。目前最稳妥的方式是:
brew uninstall php
brew install shivammathur/php/php@8.2
brew link --force php@8.2
php -v 应显示 PHP 8.2.x
php@8.2 安装后配置文件在 /opt/homebrew/etc/php/8.2/php.ini,不是系统
级路径pdo_mysql、redis)怎么启用?Homebrew 安装的 PHP 默认禁用所有扩展,需手动编辑 php.ini 并重启 CLI 或 Web 服务。
立即学习“PHP免费学习笔记(深入)”;
php --ini → 输出类似 Loaded Configuration File: /opt/homebrew/etc/php/8.2/php.ini
;extension=pdo_mysql→ 改成
extension=pdo_mysql
brew install php@8.2-redis(注意版本对齐),再在 php.ini 中加 extension=redis
php -m | grep mysql 验证是否加载成功Homebrew 的 php 公式不自动集成到 Web 服务器 —— 它只提供 CLI 和 FPM 模式。
brew install httpd 后,需手动在 /opt/homebrew/etc/httpd/httpd.conf 中加载 libphp.so(PHP 8.2 已移除此模块),推荐改用 php-fpm 方式brew services start php@8.2,然后在 Nginx 配置里指向 127.0.0.1:9000(或 Unix socket:unix:/opt/homebrew/var/run/php-fpm.sock)/opt/homebrew/etc/php/8.2/php-fpm.d/www.conf,其中 listen.owner 和 listen.group 必须匹配你的 Web 服务器用户(如 _www),否则 502 错误真正麻烦的从来不是“装上”,而是 PATH、ini 文件位置、扩展依赖、FPM 权限这四层嵌套。每次升级 PHP 版本,php.ini 不会自动迁移,扩展要重装,Web 服务配置得重调 —— 别跳过 brew services list 和 php --ini 这两步。