如何在Mac上配置本地Web服务器?(Apache/PHP/MySQL)

macOS 自带 Apache 和 PHP 但需手动启用,MySQL 需用 Homebrew 安装;配置要点包括启动服务、修改 httpd.conf 加载 PHP 模块、设置用户目录权限、检查端口与语法错误。

Mac 系统自带 Apache 和 PHP,MySQL 需要额外安装。配置本地 Web 服务器不难,关键是理清各组件角色和路径,避免权限与端口冲突。

启用系统自带的 Apache

macOS 从 Monterey(12.0)开始默认禁用内置 Apache,但二进制仍存在。终端执行以下命令即可启动:

  • 启动服务:sudo apachectl start
  • 重启服务(修改配置后):sudo apachectl restart
  • 检查状态:sudo apachectl status 或访问 http://localhost是否显示 “It works!”

默认网站根目录是 /Library/WebServer/Documents/。如需改用个人目录(比如 ~/Sites),需启用用户目录模块并配置 httpd-userdir.conf,再确保 ~/Sites 存在且权限正确(chmod 755 ~/Sites)。

启用或切换 PHP 版本

macOS 自带 PHP(旧版本如 7.3 或 8.1,取决于系统版本),但已标记为“deprecated”,不建议用于开发。更推荐用 Homebrew 安装新版:

  • 先装 Homebrew(若未安装):/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 安装 PHP:brew install php(当前默认为 PHP 8.3)
  • 让 Apache 加载新版 PHP:编辑 /etc/apache2/httpd.conf,取消注释(去掉 #)这一行:
    LoadModule php_module /opt/homebrew/lib/httpd/modules/libphp.so
    再添加一行:

    SetHandler application/x-httpd-php
  • 重启 Apache:sudo apachectl restart

验证 PHP 是否生效:在网站根目录放一个 info.php,内容为 ,浏览器访问 http://localhost/info.php 即可查看版本和配置。

安装 MySQL(或 MariaDB)

MySQL 官方不再提供 macOS ARM 原生安装包(Apple Silicon Mac),Homebrew 是最省心的方式:

  • 安装:brew install mysql(默认安装 MySQL 8.x)
  • 启动服务:brew services start mysql
  • 运行安全配置向导:mysql_secure_installation(设 root 密码、删匿名用户等)
  • 连接测试:mysql -u root -p

如果偏好图形管理工具,Sequel Ace(免费开源)或 TablePlus 都能直接连本地 127.0.0.1:3306。注意:macOS 自带的 mysql 命令可能指向旧版或未安装,务必确认 which mysql 输出的是 Homebrew 路径(如 /opt/homebrew/bin/mysql)。

常见问题快速排查

启动失败?页面空白?PHP 不解析?试试这几个点:

  • 端口被占:Apache 默认用 80 端口,Docker、Vagrant 或其他服务可能抢占。改端口可在 /etc/apache2/httpd.conf 中修改 Listen 80Listen 8080,然后访问 http://localhost:8080
  • 权限错误:Apache 进程以 _www 用户运行,确保网站文件对它可读(chmod -R 755 ~/Sites,必要时 chown -R $USER:_www ~/Sites
  • 配置语法错:修改 httpd.conf 后,执行 sudo apachectl configtest 检查语法
  • PHP 扩展缺失:如需 MySQLi 或 cURL,Homebrew 安装的 PHP 通常已含常用扩展;个别需手动开启,在 php.ini(路径见 php --ini)中取消对应行的分号注释

基本上就这些。不需要重装系统,也不必依赖 MAMP/XAMPP 这类封装包——自己配一遍,反而更清楚每一步在干什么。