Public bug reported: Bug Report: PHP Unable to load dynamic library pdo_mysql.so [ Basic Information | Desired/Actual Behaviour | Steps to reproduce | More Info (incl. PHP Info) | System Information | Apport]
Hopefully I have included all relevant information here. Please let me know if you need more or if anything is unclear :) Basic Information: Ubuntu 12.04 LTS x64, Apache 2.2.22 (Built Feb 13 2012), PHP 5.4.1 (although DPKG states installed packages are php5_5.3.10), php5-mysql (*not* php5-mysqlnd) Desired Behaviour: Launch PHP with PDO mysql_driver error free, enabled and working. Actual Behaviour: PHP launches with error in logfile: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/pdo_mysql.so' - /usr/lib/php5/20090626/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0 Steps to Reproduce: Install Ubuntu 12.04 LTS Successfully install php5, php-mysql using apt-get (no errors or warnings): sudo apt-get install php5 sudo apt-get install php5-mysql Install Symfony and Streeme with instructions on Google Code (basically svn co http://streeme.url) Perform package & distribution upgrade: apt-get dist-upgrade Start PHP: service apache2 restart Receive warning in error log: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/pdo_mysql.so' - /usr/lib/php5/20090626/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0 [Further steps to reproduce] Attempt to rescan music (./symfony scan-media --type=filesystem) Receive warning: Couldn't locate driver named mysql More Info: [ Description | PHP Info | Related Files ] I have recently upgraded (via sudo apt-get dist-upgrade) my system to 12.04 Ubuntu x64. Previously I had a very nice app called Streeme, which I used to listen to my music anywhere. It uses a framework called Symfony (Streeme requires Symfony <=1.4), and hooks into a mySQL database where it stores all of it's 'stuff' (library info, paths, users, etc). I have a working PHP5 and mySQL setup on the machine. This is verified by the use of eGroupware and phpMyAdmin (plus PHP scripts which will happily talk to the mySQL database using mysql_connect()). Four weeks ago the Apache2 webserver apache2 was replaced in place with the apache2 -mtm-itk package to allow the webserver to function with different UIDs. This was reversed two weeks ago, but the problem still exists. Before, during and after there was no issue with mySQL access through phpMyAdmin or eGroupware, or a PHP script. Attempting to revive Streeme after the upgrade (not everything works directly after an upgrade and from experience a new Streeme installation is preferable to stitching an old one together, although I don't know why- plus the hard drive with all the music on it got a kicking from which it could not recover, so I might as well start again!) has totally failed with the error: Couldn't locate driver named mysql Obviously this is a symfony framework error. However, I know that mysql should be available. After some investigation, it turns out Symfony uses PDO (particularly pdo_mysql) to access the database (and, in turn, during a media scan or doctrine installation (think bootstrapping) PHP directs Symfony). Further investigation directed me to check that the pdo was enabled correctly, so please see the following from php_info(): Loaded Configuration File /etc/php5/apache2/php.ini .ini files parsed: ... /etc/php5/apache2/conf.d/pdo_mysql.ini ... PHP API 20090626 PHP Extension 20090626 extension_dir /usr/lib/php5/20090626 mysql MySQL Support enabled Active Persistent Links 0 Active Links 0 Client API version 5.5.24 MYSQL_MODULE_TYPE external MYSQL_SOCKET /var/run/mysqld/mysqld.sock MYSQL_INCLUDE -I/usr/include/mysql MYSQL_LIBS -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r mysql.allow_local_infile On On mysql.allow_persistent On On mysql.connect_timeout 60 60 mysql.default_host no value no value mysql.default_password no value no value mysql.default_port no value no value mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock mysql.default_user no value no value mysql.max_links Unlimited Unlimited mysql.max_persistent Unlimited Unlimited mysql.trace_mode Off Off PDO PDO support enabled PDO drivers mysql, sqlite So PDO is, theoretically, enabled. There is a similar output when using the CLI configuration file (/etc/php5/cli/php.ini) However there is an error appearing in the PHP error log: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/pdo_mysql.so' - /usr/lib/php5/20090626/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0 Which seems to indicate that there is no file there (which is not true): -rw-r--r-- 1 root root 31056 Jun 13 18:36 /usr/lib/php5/20090626/pdo_mysql.so (In fact, all PDO related symbols have a timestamp of June 13, 18:36) I have checked in all /etc/php5/*/ folders for conf.d/pdo.ini, mysql.ini, pdo_mysql.ini and they all exist and have the correct directives: [e.g:] ; configuration for php PDO module extension=pdo.so But if I ask for the extension_dir using: php -c /etc/php2/apache2/php.ini -i |grep extension_dir extension_dir => /usr/local/lib/php/extensions/no-debug-zts-20100525 => /usr/local/lib/php/extensions/no-debug-zts-20100525 This directory (/usr/local/lib/php/extensions/no-debug-zts-20100525) does not exist, but PHP does not seem to look for it or use it anyway (nothing in the error log or php_info() mentions this folder). It is not even mentioned in any of the common configuration files, so I have *no idea* where PHP gets this information. So it seems that somewhere, most likely in some upgrade, this file was altered and refuses to load, causing symfony, and other packages which depend on the mysql PDO driver, to fail. I have tried to dpkg-reconfigure the various packages mentioned below but it does not fix the problem. Everything else to do with PHP works. I can only see that this is a bug with PHP which is causing symfony to fail to find the correct drivers it requires. This has worked previously on this machine. Further Information: [ PHP Version | Debsums | PHP Package versions | OS Information | ldd Output ] Output of php -c /etc/php5/apache2 --version PHP 5.4.1 (cli) (built: Apr 29 2012 18:27:47) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies Debsums info: debsums -e php5-common /etc/php5/conf.d/pdo.ini OK /etc/cron.d/php5 OK debsums -e libapache2-mod-php5 /etc/apache2/mods-available/php5.load OK /etc/apache2/mods-available/php5.conf OK debsums -e php5-mysql /etc/php5/conf.d/mysqli.ini OK /etc/php5/conf.d/mysql.ini OK /etc/php5/conf.d/pdo_mysql.ini OK PHP Installed Packages (despite php --version stating PHP version is 5.4.1) php5_5.3.10-1ubuntu3.2_all.deb php5-cli_5.3.10-1ubuntu3.2_amd64.deb php5-common_5.3.10-1ubuntu3.2_amd64.deb php5-curl_5.3.10-1ubuntu3.2_amd64.deb php5-dev_5.3.10-1ubuntu3.2_amd64.deb php5-gd_5.3.10-1ubuntu3.2_amd64.deb php5-ldap_5.3.10-1ubuntu3.2_amd64.deb php5-mysql_5.3.10-1ubuntu3.2_amd64.deb php5-sqlite_5.3.10-1ubuntu3.2_amd64.deb php-db_1.7.13-2_all.deb php-geshi_1.0.8.4-1_all.deb php-http_1.4.1-1_all.deb php-pear_5.3.10-1ubuntu3.2_all.deb apt-cache policy php5 php5: Installed: 5.3.10-1ubuntu3.2 Candidate: 5.3.10-1ubuntu3.2 Version table: *** 5.3.10-1ubuntu3.2 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 100 /var/lib/dpkg/status 5.3.10-1ubuntu3 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages apt-cache policy php5-mysql php5-mysql: Installed: 5.3.10-1ubuntu3.2 Candidate: 5.3.10-1ubuntu3.2 Version table: *** 5.3.10-1ubuntu3.2 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 100 /var/lib/dpkg/status 5.3.10-1ubuntu3 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages php5-common: Installed: 5.3.10-1ubuntu3.2 Candidate: 5.3.10-1ubuntu3.2 Version table: *** 5.3.10-1ubuntu3.2 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 100 /var/lib/dpkg/status 5.3.10-1ubuntu3 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages Release Information: lsb_release -rd Description: Ubuntu 12.04 LTS Release: 12.04 OS Information: uname -a Linux [snip] 3.2.0-25-generic #40-Ubuntu SMP Wed May 23 20:30:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux ldd /usr/lib/php5/20090626/pdo_mysql.so linux-vdso.so.1 => (0x00007fff05fe1000) libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f85b1123000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f85b0d66000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f85b0b4e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f85b094a000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f85b072d000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f85b0432000) /lib64/ld-linux-x86-64.so.2 (0x00007f85b188a000) Apport: Unfortunately apport has not registered a crash. apport-cli -p php5 --save ~/php5.bug No pending crash reports. Try --help for more information. apport-cli -p php5-mysql --save ~/php5mysql.bug No pending crash reports. Try --help for more information. ** Affects: php5 (Ubuntu) Importance: Undecided Status: New ** Tags: pdo php-mysql precise -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to php5 in Ubuntu. https://bugs.launchpad.net/bugs/1034454 Title: 12.04 Dist-upgrade breaks PHP extensions > pdo_mysql.so symbols To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1034454/+subscriptions -- Ubuntu-server-bugs mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
