1. 环境准备与前提
在开始之前,Mac 系统版本、命令行工具状态以及网络环境会直接影响后续安装与配置的顺利程度。确保 macOS 已经更新到较新版本,并且已经安装了 Xcode 命令行工具,以避免编译或依赖问题。若尚未安装,请在终端执行
xcode-select --install 来完成基础组件的准备。
为了后续的包管理更稳健,推荐使用 Homebrew 作为包管理器:它能方便地安装 PHP、Web 服务器以及相关扩展,并支持自启动管理。执行命令
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装 Homebrew,并用 brew --version 验证是否安装成功。
在后续步骤中,会涉及到 PHP 版本选择、FPM 配置、Nginx/Apache 集成与自启机制等关键点,请确保当前有管理员权限,并且在防火墙和代理环境下能访问外部仓库以顺利安装。若遇到网络下载失败,可以临时切换镜像源,确保 包源可用。
2. 安装 PHP 及核心组件
2.1 使用 Homebrew 安装 PHP
通过 Homebrew 安装指定版本的 PHP,例如 PHP 8.1,以获得稳定的 FPM 支持和常用扩展。执行以下命令即可安装并准备好服务脚本:
brew install php@8.1
brew link --overwrite --force php@8.1
安装完成后,验证版本与路径,确保命令可用且位于系统 PATH 中。可以执行
php -v 以及 which php 来确认位置。
接着,启动并设置自启。使用 Homebrew 的服务管理器启动 PHP-FPM,并将其设为开机自启,以确保本地开发环境的稳定性。执行以下命令:
brew services start php@8.12.2 验证 PHP 安装与扩展
除了基础的 PHP 版本外,常见需求还包括常用扩展,如 PDO、MySQLi、国际化等。利用 pecl 或 Homebrew 的扩展包进行安装,确保 php.ini 配置中开启相应扩展。下面给出一个常用的验证步骤:
php -m | grep -E 'pdo|mysqli|zip|opcache'\nphp -i | grep -i 'extension_dir'
如果需要额外扩展,可以通过如下方式安装并加载:
brew install php@8.1-mysql\n# 或者按需编译安装扩展3. 配置 PHP-FPM 与 Web 服务器
3.1 选择 Web 服务器:Nginx 还是 Apache
在 Mac 上,Nginx 与 PHP-FPM 的组合通常比 Apache 更轻量且配置直观,适合本地开发与快速迭代。若你更熟悉 Apache 的 .htaccess 行为,也可选择 Apache 搭配 mod_php 或 PHP-FPM 的方式,但配置略有差异。当前指南以 Nginx + PHP-FPM 为示例,帮助你快速搭建本地环境。
若选择 Nginx,请先通过 Homebrew 安装 Nginx,并确保与 PHP-FPM 的监听端口保持一致性,避免端口冲突。执行以下操作可以完成安装与启动准备:
brew install nginx
brew services start nginx
随后,确认 Nginx 与 PHP-FPM 的监听配置分离,以实现对 PHP 请求的正确处理。你需要在 Nginx 配置中指向 PHP-FPM 的端口(默认 9000)或 UNIX 套接字。
3.2 配置示例:PHP-FPM 与 Nginx
以下示例展示如何在本地运行一个简单的 PHP 文件,Nginx 将 PHP 请求转发给 PHP-FPM。请将相关路径替换为你的实际安装路径,并确保 php-fpm 的监听配置与你的 nginx.conf 一致。
# /usr/local/etc/nginx/nginx.conf
http {server {listen 8080;server_name localhost;root /Users/yourname/Sites;index index.php index.html;location / {try_files $uri $uri/ =404;}location ~ \\.php$ {include fastcgi_params;fastcgi_pass 127.0.0.1:9000; # 也可以使用 unix:/tmp/php-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}}
}
对应的 PHP-FPM 池配置示例:
# /usr/local/etc/php/8.1/php-fpm.d/www.conf
[www]
user = _www
group = _www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
启动与测试时,请确保两边的端口及路径一致性,完成后即可通过浏览器访问 本地 8080 端口的页面,检测 PHP 是否能够被正确执行。
4. 设置自启动与排错
4.1 实现自启动:使用 Homebrew Services
为确保在重启后 PHP 服务、Nginx(若使用)等组件自动启动,可以使用 Homebrew 的服务管理工具进行统一管理。以下示例展示了为 PHP-FPM 设置自启:
brew services start php@8.1
若同时使用 Nginx,也可以将 Nginx 设置为自启:
brew services start nginx
自启的核心点在于确保各个组件在正确的启动顺序下启动(通常是先 Nginx/Apache,再启动 PHP-FPM),以及在系统重启后仍然能够自动运行。
4.2 常见排错步骤与诊断命令
排错时,第一步通常是查看日志,定位是 Nginx、PHP-FPM 还是网络层的问题。常用的诊断步骤包括:
# 查看 Homebrew 服务状态
brew services list# 查看 Nginx 日志
tail -n 200 /usr/local/var/log/nginx-error.log# 查看 PHP-FPM 日志
tail -n 200 /usr/local/var/log/php-fpm.log# 测试 PHP 是否工作(只要能看到页面输出,即代表 PHP 解析正常)
curl -s http://localhost:8080/your-test.php | head -n 20
若遇到 PHP 无法被解析,常见原因包括 php-fpm 未启动、监听端口错配、fastcgi_pass 配置错误、SCRIPT_FILENAME 路径错误等。检查 php-fpm.d 和 nginx.conf 的相关配置项,确保 监听地址和端口、脚本文件路径、以及 语句所在文件可访问都是正确的。
5. 运行与测试最终阶段
5.1 启动与本地测试
在完成安装与配置后,启动所有相关服务并进行本地访问测试,确保页面可以正确返回 PHP 结果。通过浏览器访问 http://localhost:8080/,如果看到 PHP 页面内容,说明配置成功。也可以使用本地的测试脚本,如 test.php,内容简单如 ,以确认 PHP 解析通道的正确性。下面是一个简单测试用的 PHP 文件示例:
若需要对不同版本的 PHP 进行切换测试,可以通过
brew unlink php@8.1 && brew link --overwrite --force php@8.1 的方式切换当前默认 PHP 版本,确保开发环境的灵活性。 

