Debian多PHP版本环境下PHP5.3.10的PDO MySQL扩展加载问题
解决PHP5.3.10源码版无法加载pdo_mysql的问题
核心原因很明确:你通过apt-get安装的php5-mysql是针对系统默认的PHP5.4.41编译的,和源码安装的PHP5.3.10完全不兼容,必须给PHP5.3.10单独编译对应的pdo_mysql扩展才行。按照下面的步骤操作:
1. 安装编译依赖
首先确保服务器有编译所需的基础工具和MySQL开发库,执行以下命令:
sudo apt-get update sudo apt-get install build-essential libmysqlclient-dev
2. 准备PHP5.3.10的源码
- 如果你还保留着当初编译PHP5.3.10的源码包,直接解压并进入源码目录下的
ext/pdo_mysql文件夹; - 如果源码已经删除,下载PHP5.3.10的源码包,解压后进入
ext/pdo_mysql目录。
3. 用PHP5.3.10专属的phpize初始化编译环境
注意必须使用你安装的PHP5.3.10自带的phpize,绝对不能用系统默认的(系统默认是适配5.4版本的)。假设你把PHP5.3.10安装在了/usr/local/php53目录下,执行:
/usr/local/php53/bin/phpize
如果你的安装路径不同,替换成实际的PHP5.3安装路径下的bin/phpize即可。
4. 配置编译参数
执行配置命令,指定MySQL路径和PHP5.3的配置文件:
./configure --with-pdo-mysql=/usr --with-php-config=/usr/local/php53/bin/php-config
--with-pdo-mysql=/usr:Debian系统中MySQL的默认安装路径是/usr,如果你的MySQL安装在其他路径,替换成对应路径;--with-php-config:必须指定PHP5.3.10的php-config,确保编译出的扩展完全适配这个版本。
5. 编译并安装扩展
make sudo make install
执行完成后,pdo_mysql.so会被自动复制到PHP5.3.10的extension_dir目录下。
6. 配置PHP5.3.10的php.ini
- 先确认PHP5.3.10的
extension_dir路径,执行:
输出的路径就是扩展存放的目录,确保刚才编译的/usr/local/php53/bin/php -i | grep extension_dirpdo_mysql.so在这个目录里; - 打开PHP5.3.10的
php.ini文件,添加或修改以下内容:
不要直接沿用系统默认php.ini的注释,一定要确保路径和文件名完全正确。extension_dir = "刚才查到的扩展目录路径" extension=pdo_mysql.so
7. 重启Apache生效
sudo service apache2 restart
额外排查点
如果还是无法加载,查看Apache的错误日志(路径一般是/var/log/apache2/error.log),或者用PHP5.3的命令行测试:
/usr/local/php53/bin/php -m | grep pdo_mysql
如果有错误提示,根据提示进一步排查(比如缺少依赖库、路径配置错误等)。
内容的提问来源于stack exchange,提问作者NrNazifi
相关产品推荐
相关产品推荐

