MacBook 上 PHP 8.3 真正可用需满足三条件:Homebrew 正确安装 php@8.3、PATH 指向 Homebrew 的 php 二进制(非系统 /usr/bin/php)、手动复制并配置 php.ini 启用 mbstring/pdo/opcache 等扩展。

php -v 显示 8.3.x 才算真正可用,否则只是“装了但用不上”——MacBook 上运行 PHP 8.3 程序,核心就三件事:用 Homebrew 装对版本、PATH 指向正确二进制、php.ini 启用必要扩展。系统自带 php 已彻底移除(macOS 12+),别试了。
确认 Homebrew 和 PHP@8.3 是否真就位
很多人以为 brew install php@8.3 执行完就完事了,其实终端根本找不到新 php,因为 shell 还在用旧路径或压根没加载。
- 先跑
brew --version,确保 ≥ 4.0(老版本对 Apple Silicon 路径处理有坑) - 执行
brew install php@8.3后,必须把 Homebrew 的 bin 路径加到~/.zshrc开头(Apple Silicon 是/opt/homebrew/bin,Intel 是/usr/local/bin),不能只靠brew link -
which php输出必须是/opt/homebrew/bin/php(Apple Silicon)或/usr/local/bin/php(Intel),不是/usr/bin/php—— 后者是已废弃的系统残留 - 改完
~/.zshrc一定要source ~/.zshrc,新开终端不解决 PATH 加载问题
php.ini 不复制 = 扩展全失效
Homebrew 只提供 php.ini.default 模板,不自动创建生效的 php.ini。框架启动报 Class 'PDO' not found 或 mbstring 缺失,90% 是这个原因。
- 运行
php --ini,看 “Loaded Configuration File” 行。如果是(none),说明配置文件根本没生效 - 手动复制模板:
cp /opt/homebrew/etc/php/8.3/php.ini.default /opt/homebrew/etc/php/8.3/php.ini - 编辑该文件,取消注释这些行:
extension=mbstring、extension=pdo_sqlite、extension=opcache;MySQL 项目再加extension=pdo_mysql - 改完不用重启终端,直接
php -m | grep -E 'mbstring|pdo|opcache'验证是否在列表里
运行 PHP 程序:选对方式,别硬套 Apache
本地开发不是非得配 Apache 或 Nginx。多数 PHP 框架(Laravel、Symfony)和脚本,用内置服务器最省事,也最不容易出端口/权限冲突。
- 进项目目录,直接跑:
php -S localhost:8000—— 它会自动找router.php或响应静态文件 - 如果非要 Apache:
brew install httpd后,必须手动编辑/opt/homebrew/etc/httpd/httpd.conf,取消注释LoadModule php_module并加AddHandler php-script .php,否则.php文件直接被下载 - Nginx + PHP-FPM 性能好,但调试成本高:要确保
brew services start php@8.3和brew services start nginx都在运行,且 Nginx 的fastcgi_pass地址与 PHP-FPM 监听地址一致(默认都是127.0.0.1:9000)
Composer 必须用官方脚本装,不是 brew install composer
brew install composer 装的是阉割版,常导致 laravel new 失败或签名验证报错。PHP 8.3 环境下 Composer 必须走官方安装流程。
立即学习“PHP免费学习笔记(深入)”;
- 执行:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 校验哈希(2026 年当前有效):
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1f6133267f71df8ae4f85de586033151e5a16c7247988c51021449a80d698') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" - 全局安装:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer - 验证:
composer --version应显示 2.7.x+,且composer diagnose不报openssl或zip扩展缺失
php.ini 里的 date.timezone,但 CLI 和 Web 服务都依赖它;如果 phpinfo() 显示时区为空,DateTime 类操作可能出错——务必在 php.ini 里显式写上 date.timezone = Asia/Shanghai。



















