由于“zval_ptr_dtor”错误,无法加载 SQLsrv

由于“zval_ptr_dtor”错误,无法加载 SQLsrv

我正在尝试按照以下指南安装 PHP MSSQL 驱动程序:https://serverpilot.io/docs/how-to-install-the-php-sqlsrv-extension

但是安装后我一直遇到这个错误(安装过程中没有明显的错误):

PHP Warning:  PHP Startup: Unable to load dynamic library 'sqlsrv.so' (tried: /usr/lib/php/20170718/sqlsrv.so (/usr/lib/php/20170718/sqlsrv.so: undefined symbol: zval_ptr_dtor), /usr/lib/php/20170718/sqlsrv.so.so (/usr/lib/php/20170718/sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlsrv.so' (tried: /usr/lib/php/20170718/pdo_sqlsrv.so (/usr/lib/php/20170718/pdo_sqlsrv.so: undefined symbol: zval_ptr_dtor), /usr/lib/php/20170718/pdo_sqlsrv.so.so (/usr/lib/php/20170718/pdo_sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

在我看来,主要问题是这个:

/usr/lib/php/20170718/sqlsrv.so: undefined symbol: zval_ptr_dtor

我已经尝试卸载并重新开始两次了,但还是没能解决。有人能给出如何修复这个问题的建议吗?

我运行 PHP 7.2.14-1+ubuntu18.04.1+deb.sury.org+1。

答案1

我在使用其他插件时也遇到了类似的错误,这是我的解决方案。使用 pecl 安装 .so 插件时,我注意到最后出现了一个错误:

配置选项“php_ini”未设置为 php.ini 位置

为了修复这个问题我只需要输入这个(我的是 php 版本 8)现在它可以工作了:

pear config-set php_ini /etc/php/8.0/apache2/php.ini

答案2

我有同样的问题。我意识到我在编译模块时出错了。我在我的环境中

  • PHP 7.2
  • php 配置 7.3

因此我卸载了模块:

sudo pecl uninstall sqlsrv
sudo pecl uninstall pdo_sqlsrv

将 php-config 7.2 设置为默认值并重新安装。

相关内容