加载/usr/lib/php7/modules/xdebug.so 失败:重新定位/usr/lib/php7/modules/xdebug.so 时出错:php_sprintf:找不到符号

Posted

技术标签:

【中文标题】加载/usr/lib/php7/modules/xdebug.so 失败:重新定位/usr/lib/php7/modules/xdebug.so 时出错:php_sprintf:找不到符号【英文标题】:Failed loading /usr/lib/php7/modules/xdebug.so: Error relocating /usr/lib/php7/modules/xdebug.so: php_sprintf: symbol not found 【发布时间】:2021-05-15 17:34:28 【问题描述】:

我们正在尝试在基于 Alpine Linux 并运行 php-fpm 的 Docker 容器中安装 XDebug。我们按照this 页面上的安装说明进行操作。它说要为 Alpine Linux 运行以下命令,这就是我们所做的:

bash-5.0# apk add php7-pecl-xdebug
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
(1/2) Installing php7-common (7.3.22-r0)
(2/2) Installing php7-pecl-xdebug (2.9.1-r0)
OK: 85 MiB in 74 packages

然后我们可以看到.so 文件位于/usr/lib/php7/modules/xdebug.so 下,因此我们将其添加到/usr/local/etc/php/php.ini 中,如下所示:

zend_extension = /usr/lib/php7/modules/xdebug.so

然后我们重新启动了容器。该网页说通过运行验证安装:

bash-5.0# php -v

当我们运行命令时,这是我们得到的输出:

bash-5.0# php -v
Failed loading /usr/lib/php7/modules/xdebug.so:  Error relocating /usr/lib/php7/modules/xdebug.so: php_sprintf: symbol not found
PHP 7.4.4 (cli) (built: Mar 24 2020 01:34:16) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.4, Copyright (c), by Zend Technologies

我们如何解决这个问题?谢谢。如果有帮助:

bash-5.0# ls -al /usr/lib/php7/modules/xdebug.so
-rwxr-xr-x    1 root     root        268088 Jan 18  2020 /usr/lib/php7/modules/xdebug.so

【问题讨论】:

【参考方案1】:

我认为此错误来自系统上未安装的某些 C 库。我们从this answer 执行了以下步骤,并且成功了。它还安装了最新版本的xdebug(版本 3.0.2)。 apk add php7-pecl-xdebug 正在安装 xdebug 的 2.9 版。

第 1 步:安装依赖项:

apk --no-cache add pcre-dev $PHPIZE_DEPS

第 2 步:从源代码构建二进制文件:

pecl install xdebug

成功后应该以

结尾
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so'
install ok: channel://pecl.php.net/xdebug-3.0.2
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" to php.ini

第 3 步:现在编辑 php.ini 并将 zend_extension 设置为上面给出的路径

第 4 步:验证

bash-5.0# php -v
PHP 7.4.4 (cli) (built: Mar 24 2020 01:34:16) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v3.0.2, Copyright (c) 2002-2021, by Derick Rethans
    with Zend OPcache v7.4.4, Copyright (c), by Zend Technologies

【讨论】:

以上是关于加载/usr/lib/php7/modules/xdebug.so 失败:重新定位/usr/lib/php7/modules/xdebug.so 时出错:php_sprintf:找不到符号的主要内容,如果未能解决你的问题,请参考以下文章

类加载器

类加载机制

类加载器和双亲委派

jpa 设置懒加载怎么手动加载

图片懒加载和预加载

前端懒加载以及预加载