Mac装ThinkPHP需先确认PHP≥7.2并启用pdo_mysql、mbstring、curl、opcache扩展;配置Apache/Nginx伪静态规则;MySQL连接优先用127.0.0.1避免socket路径问题;设runtime目录权限及Composer阿里云镜像。

Mac上装ThinkPHP前先确认PHP版本和扩展
ThinkPHP 6.x 要求 PHP ≥ 7.2,但 macOS 自带的 PHP(如 8.1 或 8.2)可能缺 pdo_mysql、mbstring、curl 这些关键扩展。直接用 composer create-project topthink/think 很容易在启动时报 Class 'PDO' not found 或 mb_strlen(): Argument #1 ($string) must be of type string。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 运行
php -v确认当前 PHP 版本,再执行php -m | grep -E "pdo|mbstring|curl"检查扩展是否加载 - 如果用 Homebrew 安装的 PHP(推荐),确保安装了对应扩展:比如
brew install php@8.2后,brew install php@8.2-mysql并检查php.ini中是否启用了extension=pdo_mysql.so - macOS Monterey 及更新系统默认禁用
opcache,而 ThinkPHP 的路由缓存依赖它——需手动在php.ini中取消注释zend_extension=opcache
Apache或Nginx本地跑ThinkPHP必须配好rewrite规则
Mac 自带 Apache(/etc/apache2/)或用 Homebrew 装的 Nginx,默认不支持 ThinkPHP 的 PATH_INFO 或伪静态路由,访问 http://localhost/index/index 会直接 404,而不是进 index.php 入口文件。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- Apache 下,在项目根目录放
.htaccess,内容必须包含RewriteRule ^(.*)$ index.php [L];同时确认httpd.conf中LoadModule rewrite_module libexec/apache2/mod_rewrite.so已启用,且对应目录配置里有AllowOverride All - Nginx 下,
server块内必须加:location / { try_files $uri $uri/ /index.php?$query_string; },不能只写try_files $uri $uri/ =404 - 别用
php -S内置服务器跑正式开发——它不支持 PATH_INFO,ThinkPHP 6 默认路由模式会失效;改用php think run(需确保think命令可执行)更稳
MySQL连接失败常因 socket 路径不对或权限问题
Mac 上用 Homebrew 装 MySQL,localhost 和 127.0.0.1 行为不同:前者走 Unix socket,后者走 TCP。ThinkPHP 配置里写 'hostname' => 'localhost' 时,若 mysql.default_socket 没指向正确的 /opt/homebrew/var/mysql/mysql.sock(Apple Silicon)或 /usr/local/var/mysql/mysql.sock(Intel),就会报 SQLSTATE[HY000] [2002] No such file or directory。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 查 socket 路径:运行
mysql_config --socket或登录 MySQL 后执行SHOW VARIABLES LIKE 'socket'; - 在 ThinkPHP 的
config/database.php中,把'hostname'改成'127.0.0.1'是最快绕过方案;如坚持用localhost,则同步在php.ini里设mysql.default_socket = /opt/homebrew/var/mysql/mysql.sock - 新建数据库用户时,别只授权
localhost,要加上'user'@'127.0.0.1',否则 PDO 连不上
vendor 目录权限和 Composer 镜像容易被忽略
Mac 默认用 zsh,用户属于 staff 组,但 Homebrew 安装的 PHP 可能以 _www 用户跑 Apache,导致 runtime 目录写入失败,报错 file_put_contents(runtime/log/...): failed to open stream: Permission denied;另外国内直连 Packagist 极慢,composer create-project 卡住是常态。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 给
runtime和public/static目录加写权限:chmod -R 775 runtime public/static,并确认所属组是staff(chgrp -R staff runtime public/static) - 设置 Composer 全局镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,避免每次都要等超时 - 别在项目外全局升级
composer——ThinkPHP 6 依赖composer-plugin-api2.0+,但旧版 Mac 自带的 Composer(如 1.x)会报Plugin installation failed,应统一用php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"重装
最麻烦的其实是 PHP 扩展路径和 socket 路径随 Homebrew 升级悄悄变,每次 brew upgrade php 或 mysql 后,最好重新核对一遍 php.ini 和数据库配置里的路径值。


















