
在macOS上快速搭建ThinkPHP 8.0开发环境,需同时解决PHP版本合规性、Web服务可访问性、数据库可连接性三大刚性需求,不能只装PHP就认为环境齐备。
安装Homebrew并配置基础工具链
打开终端,粘贴执行官方安装命令:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。脚本会自动检测系统权限并暂停提示,按回车继续即可。
安装完成后运行 brew --version,确认输出类似 4.3.12 的版本号。若报错“command not found”,说明PATH未生效,需手动将Homebrew路径加入shell配置——Apple Silicon Mac执行 echo 'export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"' >> ~/.zshrc,Intel Mac则用 echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.zshrc。
执行 source ~/.zshrc 立即加载新路径,再运行 brew update 更新软件索引。这一步跳过会导致后续安装PHP时找不到包名或版本错误。
用Homebrew安装PHP 8.0并验证
ThinkPHP 8.0【必须使用PHP 8.0.0或更高版本】,低版本会直接报致命错误:ParseError 或 Undefined attribute。执行 brew install php@8.0 安装指定版本(注意不是 php,那是最新版,可能已是8.3)。
安装完毕后运行 php -v,输出应为 PHP 8.0.x (cli)。若仍显示旧版本(如7.4),说明系统默认调用的是其他PHP路径,需强制覆盖:执行 brew unlink php && brew link --force php@8.0。
验证扩展是否可用:php -m | grep -E "(pdo|mysql|mbstring|xml)",至少要看到 pdo、pdo_mysql、mbstring、xml 四项。缺任何一项都可能导致ThinkPHP启动时报 Class not found 或 extension missing。
用Docker启动MySQL 8.0容器
避免在宿主机直装MySQL带来的权限、端口、版本冲突问题,统一用Docker管理数据库服务。先确保Docker已安装并运行——在终端输入 docker --version,有输出即表示就绪;若提示 command not found,先执行 brew install --cask docker,然后双击Applications里的Docker图标启动服务。
拉取MySQL 8.0官方镜像:docker pull mysql:8.0。该镜像自带初始化脚本和安全配置,比5.7更适配ThinkPHP 8.0的严格模式。
运行容器并挂载配置:docker run -d --name tp8-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=tp8dev -v $(pwd)/mysql-conf:/etc/mysql/conf.d -v $(pwd)/mysql-data:/var/lib/mysql -d mysql:8.0。其中 -v $(pwd)/mysql-conf 是为后续自定义sql_mode预留,【务必确保当前目录存在且有写入权限,否则容器会因无法挂载而静默退出】。
检查容器状态:docker ps | grep tp8-mysql,看到 STATUS 为 Up 即代表运行成功。再执行 docker exec -it tp8-mysql mysql -uroot -ptp8dev -e "SELECT VERSION();",返回 MySQL 版本号即证明连接通路已打通。
创建ThinkPHP 8.0项目并配置数据库连接
方法一:用Composer镜像一键生成(推荐)
执行 docker run --rm -v "$(pwd):/app" composer create-project topthink/think:8.0.* tp8-app。该命令不依赖本地Composer,全程在容器内完成依赖解析与下载,避免Mac M系列芯片下PHP扩展兼容问题。
方法二:本地安装(仅当已配置好php+composer且确认无扩展缺失)
先进入项目目录:cd tp8-app,再运行 composer create-project topthink/think:8.0.* .(注意末尾是英文句点)。若卡在 installing dependencies 超过2分钟,立即中断并改用方法一。
编辑 tp8-app/config/database.php,将 'hostname' => '127.0.0.1' 改为 'hostname' => 'host.docker.internal'。这是Docker for Mac提供的特殊DNS名,指向宿主机网络栈,【若仍填127.0.0.1,PHP容器将无法访问宿主机上的MySQL容器】。
修改数据库参数:'database' => 'tp8_dev','username' => 'root','password' => 'tp8dev',其余保持默认。保存后进入项目根目录,执行 php think migrate:run,看到 Migrated: xxx_create_user_table 表示数据库初始化成功。
启动内置服务器并访问首页
在 tp8-app 目录下执行 php think run。默认监听 http://127.0.0.1:8000,终端会实时打印请求日志。
打开浏览器访问 http://127.0.0.1:8000,页面显示 ThinkPHP 8.0 的欢迎横幅及环境信息卡片,右上角显示 PHP Version: 8.0.x 和 Server: PHP Built-in Server 即表示全部就绪。
若页面空白或报错 Connection refused,立刻检查:① Docker中tp8-mysql容器是否仍在运行;② database.php里hostname是否误写为localhost;③ 终端是否在tp8-app目录下执行了php think run。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











