MAMP Pro需编辑对应PHP版本的模板php.ini文件,启用xdebug.mode=profile和xdebug.start_with_request=trigger,并设置可写output_dir路径,重启后带?XDEBUG_PROFILE=1参数访问才能生成cachegrind.out.*文件。
确认MAMP Pro用的是哪个php.ini
很多人改完配置却没生成
文件,根本原因是改错了配置文件。MAMP Pro 为每个 PHP 版本维护独立的
,你必须编辑当前项目实际使用的那个版本的模板。
操作路径:MAMP Pro → File → Edit Template → PHP → 选择你项目所用的 PHP 版本(比如 PHP 8.2)→ 打开该
文件。别直接去
下乱改,那不是 MAMP Pro 运行时加载的配置。
行必须存在且路径正确(MAMP Pro 自带 xdebug,路径通常类似
)
删掉旧的
类似写法(Xdebug 3 不认这个)
确保没有同时启用
或其他冲突模式
Xdebug 3 必须设对两个关键参数
MAMP Pro 默认可能只开了 debug 模式,但 profiling 是独立开关。Xdebug 3 要真正记录性能数据,
和
必须协同生效。
在刚才打开的
中,找到
区块,添加或修改以下两行:
启用 profiling 模式(不是
—— 多余逗号可能导致模式解析失败)
表示仅当请求带
或 Cookie
时才启动,避免全量日志污染
不要设
—— 这会让每次请求都写文件,开发机磁盘很快被占满
检查 output_dir 权限和路径是否可写
默认
是
,但 macOS 上 MAMP Pro 的 Web Server 进程(Apache 或 Nginx)通常以
用户运行,而
默认不允许该用户写入。
推荐做法:显式指定一个 MAMP Pro 有权限的目录,并确保它存在、可写:
先在终端执行:
重启 MAMP Pro(必须重启,改
后 reload 不生效)
访问
,搜索
,确认
在
值中,且
显示为你刚设的路径
触发 profiling 并验证文件生成
浏览器访问你的目标 URL,**必须带触发参数**,例如:
然后立刻去你设的
目录下检查:
是否有新生成的
文件?文件名类似
如果没有,检查 Apache/Nginx 错误日志(
),常见报错是
如果文件有了但 webgrind 扫不到,确认 webgrind 的
中
路径完全一致(注意末尾不加斜杠)
最易忽略的一点:MAMP Pro 的「PHP Extensions」界面里勾选了 xdebug,不代表 profiling 就开了——它只控制扩展是否加载,具体功能还得靠
驱动。
cachegrind.out.*php.iniphp.ini/Applications/MAMP/bin/php/zend_extension/Applications/MAMP/bin/php/php8.2.12/lib/php/extensions/no-debug-non-zts-20220829/xdebug.soxdebug.profiler_enable=1xdebug.mode=offxdebug.modexdebug.start_with_requestphp.ini[xdebug]
xdebug.mode = profile
xdebug.start_with_request = trigger
xdebug.mode = profiledebug,profilexdebug.start_with_request = trigger?XDEBUG_PROFILE=1XDEBUG_PROFILE=1xdebug.start_with_request = yesxdebug.output_dir/tmp_www/tmp
xdebug.output_dir = "/Applications/MAMP/logs/xdebug-profile"
sudo mkdir -p "/Applications/MAMP/logs/xdebug-profile" && sudo chown _www:_www "/Applications/MAMP/logs/xdebug-profile"php.inihttp://localhost:8888/phpinfo.phpxdebugProfilexdebug.modexdebug.output_dirhttp://localhost:8888/your-app/index.php?XDEBUG_PROFILE=1xdebug.output_dircachegrind.out.*cachegrind.out.1745445228.12345/Applications/MAMP/logs/apache_error.logFailed to open stream: Permission deniedconfig.php$dir = '/Applications/MAMP/logs/xdebug-profile';xdebug.mode