必须用mamp pro配置独立虚拟主机,因其能绕过public子目录限制、启用url重写并正确传递path_info,而免费版mamp无法完成;需将documentroot设为public目录、启用url rewriting、绑定兼容php版本、修改hosts绑定域名(127.0.0.1 tp5.local)、验证path_info传递成功后方可正常访问。

在macOS上让ThinkPHP项目通过自定义域名(如tp5.local)直接访问,避免每次输入localhost:8888/tp5/public的冗长路径,必须用MAMP Pro配置独立虚拟主机——它能绕过public子目录限制、启用URL重写、并正确传递PATH_INFO,这是免费版MAMP无法完成的核心操作。
创建ThinkPHP专用虚拟主机
打开MAMP Pro → 点击左下角【+】按钮 → 在弹出窗口中选择“New Host” → 点击“Continue”。
在“Host Name”栏输入你想要的本地域名,例如【tp5.local】(不能含下划线、空格或中文,且必须以字母开头);下方“Document Root”点击右侧文件夹图标,导航至ThinkPHP项目的【public目录】,例如:/Applications/MAMP/htdocs/tp5/public。
这一步必须选对public目录,否则ThinkPHP的路由和静态资源将全部404——因为框架入口已强制收敛至此,而非整个tp5根目录。
启用Apache重写与PHP版本绑定
切换到“Apache”选项卡 → 勾选“Activate URL rewriting” → 确保“PHP Version”下拉菜单中选择与ThinkPHP 6.x兼容的PHP 7.4或8.0+版本(5.0/5.1需选PHP 7.2+)。
若项目使用ThinkPHP 6.3+且启用了Swoole或协程特性,此处必须选对应支持的PHP版本,否则启动时会报Class 'Swoole\Coroutine' not found错误。
点击右上角“Save”保存主机配置,此时MAMP Pro会自动校验路径有效性并提示是否重启服务。
修改系统hosts文件绑定域名
打开终端,执行:sudo nano /etc/hosts → 输入管理员密码 → 在文件末尾新增一行:127.0.0.1 tp5.local → 按Control+O回车保存 → Control+X退出。
这步不可跳过,也不能写成127.0.1.1或::1,否则浏览器会因IPv6优先策略导致域名解析失败,始终返回“找不到服务器”。
关闭并重新打开终端,执行ping tp5.local确认返回127.0.0.1即表示绑定成功。
验证Rewrite与PATH_INFO传递
在ThinkPHP项目的public目录下新建一个临时测试文件test.php,内容为:<?php var_dump($_SERVER['PATH_INFO'] ?? 'not set', $_SERVER['REQUEST_URI'] ?? 'not set'); ?>。
启动MAMP Pro中的Apache服务 → 在浏览器访问http://tp5.local/test.php/hello/world → 页面应输出string(11) "/hello/world"。
若显示"not set",说明Apache未正确传递PATH_INFO,需检查Apache配置中AcceptPathInfo On是否生效——MAMP Pro默认已开启,但若手动改过httpd.conf可能被覆盖。
确认无误后,删除test.php文件。
启动服务并访问首页
回到MAMP Pro主界面 → 点击左上角“Start Servers” → 等待Apache和MySQL状态变为绿色运行中 → 在浏览器地址栏输入http://tp5.local/ → 页面正常显示ThinkPHP欢迎页或路由首页。
此时所有请求都经由虚拟主机路由,http://tp5.local/index.php/admin、http://tp5.local/static/css/app.css均可直接访问,无需public路径中转。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











