PHP 8.1 与 Xdebug - 在平面命名空间中找不到符号 '_zend_get_parameters_array_ex'

标签 php homebrew xdebug pecl

系统信息

  • macOS 13.2.1 (22D68)(英特尔处理器)
  • 通过 Homebrew 软件安装的 PHP 版本
  • 通过 pecl 安装 Xdebug
  • Xdebug 版本 3.2.0(应受支持 -> 请参阅 https://xdebug.org/docs/compat)

错误描述

我正在尝试让 Xdebug 在 PHP 8.1 上运行。

虽然它在 PHP 8.2 上运行良好

PHP 8.2.4 (cli) (built: Mar 16 2023 16:46:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.4, Copyright (c) Zend Technologies
    with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans
    with Zend OPcache v8.2.4, Copyright (c), by Zend Technologies

与 php8.1 一起使用时收到以下错误消息

Failed loading /usr/local/lib/php/pecl/20220829/xdebug.so:  dlopen(/usr/local/lib/php/pecl/20220829/xdebug.so, 0x0009): symbol not found in flat namespace '_zend_get_parameters_array_ex'
PHP 8.1.17 (cli) (built: Mar 16 2023 13:19:00) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.17, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.17, Copyright (c), by Zend Technologies

以下行已添加到 php.ini 中。

zend_extension="/usr/local/lib/php/pecl/20220829/xdebug.so"

我尝试/做过的事情

  • 重新安装 Xdebug(pecl 卸载然后安装)
  • 使用extension=xdebug.so(无法加载动态库 - 适用于 8.2)
  • brew 更新/升级

有人知道我还可以尝试什么吗?

最佳答案

此错误意味着您正在尝试使用错误的 PHP 版本 (8.1) 加载某个 PHP 版本 (8.2) 的 Xdebug 版本。每个 PHP 版本都需要有自己的 xdebug.so 文件。

如果您使用 pecl,那么您需要确保使用与您的 PHP 版本的安装目录相匹配的 pecl 命令。该工具应位于与 php 二进制文件相同的目录中,您将拥有多个该二进制文件。

关于PHP 8.1 与 Xdebug - 在平面命名空间中找不到符号 '_zend_get_parameters_array_ex',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75788629/

相关文章:

php - 安装了 Xdebug 但我无法在 phpinfo 中找到它

php - 执行此子查询的更好方法

php - 在 Get_Where 查询中匹配 JSON 字段(Code Igniter)

php - Yii 即使在 Debug模式下也显示标准错误

python - 我不明白我通过 Homebrew 安装 Python

mysql2 gem 无法在 OS X 上使用 Homebrew 编译 MySQL 5.6.12

node.js - 更新 Node 和 NPM

php - Qt 到 PHP 发布请求被截断为 1024 个字符 - 为什么?

javascript - 如何使用 js 或 jquery 将选项组合传递到 PHP 表单

php - 检查 xdebug 是否正在运行