[php-src] Issue #9996: Undefined symbol: pdo_parse_params when loading dynamic library 'pdo_mysql'
| From: | myyangang | Date: | Thu, 24 Nov 2022 11:38:57 +0000 |
| Subject: | [php-src] Issue #9996: Undefined symbol: pdo_parse_params when loading dynamic library 'pdo_mysql' | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-242897@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/9996
Author: myyangang
### Description
I installed PHP-8.1.2 and
php-mysql extension on Ubuntu 22.04. After enabling it
manually in php.ini, PHP keeps warning that there's a undefined symbol:
pdo_parse_params and refuses to load it.
```
root@linux /v/w/html# php --version
(base)
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried:
/usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: undefined symbol:
pdo_parse_params), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: undefined
symbol: pdo_parse_params)) in Unknown on line 0
PHP 8.1.2-1ubuntu2.8 (cli) (built: Nov 2 2022 13:35:25) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.8, Copyright (c), by Zend Technologies
```
And I'm sure that it has been installed.
```
root@linux /v/w/html [100]# apt install php-mysql
(base)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
php-mysql is already the newest version (2:8.1+92ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@linux /v/w/html# php -m
[PHP Modules]
......
PDO
pdo_mysql
......
root@linux /v/w/html# tree /usr/lib/php/
/usr/lib/php/
|-- 20210902
| |-- ......
| |-- pdo.so
| |-- pdo_mysql.so
| |-- ......
```
But readelf told me that pdo_parse_params does exist.
```
root@linux /u/l/p/20210902# readelf -a pdo_mysql.so | grep "pdo_parse"
000000008de8 000100000007 R_X86_64_JUMP_SLO 0000000000000000 pdo_parse_params + 0
000000008f98 003e00000007 R_X86_64_JUMP_SLO 0000000000000000 php_pdo_parse_dat[...] + 0
1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND pdo_parse_params
62: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_pdo_parse_da[...]
```
I'm so confusing about this problem. Why PHP can't identify this
pdo_parse_params?
### PHP Version
PHP 8.1.2
### Operating System
Ubuntu 22.04