Xdebug MacOS Big Sur M1(ARM)

Posted

技术标签:

【中文标题】Xdebug MacOS Big Sur M1(ARM)【英文标题】: 【发布时间】:2021-11-26 23:53:27 【问题描述】:

老实说,我已经尝试了一切以使其正常工作。我对 MacOS 有点陌生,但我已经开始掌握它的窍门了。

我已经在我的 Mac 上安装了 Xdebug,并使用 XAMPP 和 VSCode 作为编辑器。它仍然无法正常工作,我认为它没有连接。

php.ini

[XDebug]
zend_extension = /Applications/XAMPP/xamppfiles/lib/php/extensions/xdebug.so
xdebug.remote_port = 9003
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "/Applications/XAMPP/xamppfiles/temp"
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_enable = On
xdebug.trace_output_dir = "/Applications/XAMPP/xamppfiles/temp"

VSCode 启动.json:

      "type": "php",
      "request": "launch",
      "port": 9003

是的,我的文件就在那个确切的位置。 如果有人对发生的事情有任何了解,我会很高兴知道。

更新 所以我检查了我的错误日志,我遇到了这个问题:

[12-Oct-2021 07:00:06 UTC] PHP 警告:加载 Zend 扩展“xdebug”失败(尝试:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts- 20190902/xdebug(dlopen(/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20190902/xdebug,9):找不到图像),/Applications/XAMPP/xamppfiles/lib/php/ extensions/no-debug-non-zts-20190902/xdebug.so (dlopen(/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so, 9): 不适合找到图片。确实找到了: /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so:mach-o,但架构错误 /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so: mach-o, but wrong architecture)) 在 Unknown on line 0

在网站上它说 xdebug 仅支持自制软件。但是使用 homebrew 安装 php 与使用 XAMPP 不同。我开始认为我不能同时使用 XAMPP 和 XDebug,而必须使用集成的 apache。

XDebug 向导:

安装编译 PHP 扩展的先决条件。 在您的 Mac 上,我们仅支持使用 'homebrew' 进行安装,并且 brew install php && brew install autoconf 应该引入正确的包。”

当我在终端中查找 php 版本时,它会在 homebrew 中获取版本,所以我将其删除。可能是当我使用 ./configure 时,它​​把 PATH 带到了自制软件中。这可能是图像不正确的原因。

无论问题是什么,我都找不到任何解决方案,并且尝试了很多方法

【问题讨论】:

加载了哪个版本的Xdebug?找出其中包含<?php xdebug_info(); ?> 的脚本并显示它的内容。 @Myrras 正如 Derick 所说——你的 Xdebug 版本是什么?您正在使用 Xdebug v2 参数。但是当前的 Xdebug 版本 v3 现在使用不同的参数名称,并且 v2 参数在 v3 上没有任何作用。 xdebug.org/docs/upgrade_guide我建议您发布xdebug_info() 输出(或phpinfo() 的整个Xdebug 部分)——它将显示您当前/实时配置。我还建议您启用 Xdebug 日志——它会告诉它尝试连接的位置(当然,如果它尝试连接)以及响应是什么。顺便说一句:1)learnxdebug.com 2)youtube.com/watch?v=IN6ihpJSFDw xdebug_info() 不起作用@Derick 它也没有出现在 phpinfo 中。所以我认为它没有加载 确保你更新的是正确的php.ini 然后 - phpinfo() 会告诉你要更新哪一个,对于 CLI 和/或 Web 服务器请求可能会有所不同。 我寻找了同样的东西,并注意到当我使用 php -m 时它需要一个不同的 php.ini 【参考方案1】:

线索在这条消息中:

mach-o,但架构错误

在 M1 上,您的 PHP 可以针对 x86_64 或 arm64 架构进行编译。 pecl 工具无法猜测它是哪一个,所以如果你的 PHP 是使用 x86_64 编译并且默认编译器设置是 arm64,那么你会收到上述警告。

这意味着,有时您必须使用以下方式运行 PECL:

arch -x86_64 sudo pecl install xdebug

arch -x86_64 部分将设置环境以将 Xdebug 编译为 x86_64 二进制文件。

您可以使用以下方法检查您的 PHP 架构是什么:

file /full/path/to/php

【讨论】:

【参考方案2】:

经过几天的尝试解决这个问题,我终于明白了。 您需要做的是:

第 1 步: 检查终端中的路径

which php

第 2 步: 如果这不是您当前的 http 服务器,例如 XAMPP 或 MAMP,请通过创建 ./bash_profile 来纠正它 MAMP 示例:https://gist.github.com/irazasyed/5987693 XAMPP 示例:https://gist.github.com/djandyr/c04950a1375e96814316

第 3 步: 再次检查 php 版本(重复步骤 1)。 如果这是您的 http 服务器的版本,则可以。

第 4 步: 输入终端

php -v

第 5 步: 如果您的 xDebug 无法加载,它现在会告诉您原因。 (或在错误日志中)。 正如我所说,我有一台 M1 Macbook,我认为 xDebug 不支持 M1。

第 6 步: 安装 xDebug 终端:

arch -x86_64 sudo pecl install xdebug

第 7 步: 现在重新启动所有并尝试您的 phpinfo。

调试愉快!

【讨论】:

"第 6 步:因为 xDebug 不支持 M1" — Xdebug 支持 M1 就好了。这取决于 PHP 编译成什么架构,Xdebug 需要匹配那个架构。 啊,所以我只是安装了错误的软件包而不是 xDebug 不支持 ARM。我希望我的指南仍然有用。

以上是关于Xdebug MacOS Big Sur M1(ARM)的主要内容,如果未能解决你的问题,请参考以下文章

Xdebug 安装失败,因为使用 MAMP 在 macOS Big Sur 上“phpize”失败

错误:命令“clang”失败,退出状态为 1:在 MacOS Big Sur M1 上安装熊猫

Mac M1 芯片机,Macos Big Sur 版本 11.5.1 与 eclipse 应用程序有问题。重启机器后打不开

macOS Big Sur 中的分段错误后未生成核心转储文件

Macbook m1 Big Sur 安装Valet 运行yii2

黑苹果:Big Sur更换DW1820A网卡