Description of problem and resolution, for documentation purpose, because I ran into this on Karmic:
- apache, php, libapache2-mod-php5, mysql-server have been installed via package manager (apt, adept, etc).
- then pdo and pdo_mysql were installed via pecl. pdo.ini and pdo_mysql.ini are manually created in /etc/php5/conf.d/ with instructions to load these extensions. Up to now lamp runs fine for php code that relies on pdo to connect to mysql.
- later on, php5_mysql is installed via apt-get and upon restarting apache, it seems to restart "OK", but can't resolve to virtualhosts anymore. The error logs (/var/log/apache/error.log) may contain this message:
/usr/sbin/apache2: symbol lookup error: /usr/lib/php5/20060613/pdo_mysql.so: undefined symbol: php_pdo_get_dbh_ce
You might see the same message if you run php from the shell.
Resolution: it seems that pdo and pdo_mysql need to be installed *after* php5_mysql, so uninstall both with pecl (don't forget to comment out their ini files in /etc/php5/conf.d/). If php5_mysql isn't yet installed, do so with apt (or derivative), make sure the mysql.ini file gets created in /etc/php5/conf.d/. If it doesn't, create one manually:
echo "extension=mysql.so" | sudo tee /etc/php5/conf.d/mysql.ini
Now, reinstall pdo and pdo_mysql (via pecl). Uncomment their conf file's contents. Restart apache. Things should be back to normal.
Description of problem and resolution, for documentation purpose, because I ran into this on Karmic:
- apache, php, libapache2- mod-php5, mysql-server have been installed via package manager (apt, adept, etc). apache/ error.log) may contain this message:
- then pdo and pdo_mysql were installed via pecl. pdo.ini and pdo_mysql.ini are manually created in /etc/php5/conf.d/ with instructions to load these extensions. Up to now lamp runs fine for php code that relies on pdo to connect to mysql.
- later on, php5_mysql is installed via apt-get and upon restarting apache, it seems to restart "OK", but can't resolve to virtualhosts anymore. The error logs (/var/log/
/usr/ sbin/apache2: symbol lookup error: /usr/lib/ php5/20060613/ pdo_mysql. so: undefined symbol: php_pdo_get_dbh_ce
You might see the same message if you run php from the shell.
Resolution: it seems that pdo and pdo_mysql need to be installed *after* php5_mysql, so uninstall both with pecl (don't forget to comment out their ini files in /etc/php5/conf.d/). If php5_mysql isn't yet installed, do so with apt (or derivative), make sure the mysql.ini file gets created in /etc/php5/conf.d/. If it doesn't, create one manually:
echo "extension= mysql.so" | sudo tee /etc/php5/ conf.d/ mysql.ini
Now, reinstall pdo and pdo_mysql (via pecl). Uncomment their conf file's contents. Restart apache. Things should be back to normal.