Fork me on GitHub

阿里云服务器安装 pdo-mysql 扩展

当前环境:
centos 系统
php, mysql 都是由 yum 安装的
相关目录:
/usr/bin/phpize
/usr/bin/php-config
/usr/bin/mysql
/usr/bin/mysql_config

踩过的坑

1
2
-- 从 http://pecl.php.net/package/PDO_MYSQL 下载安装 pdo_mysql
人家网站上很明确的说已经不再维护了!可以去查看 php 源码下的 ext/pdo_mysql

走上正确的路

1
2
3
4
5
6
7
8
9
因为是 yum 安装的 php,在 php 安装目录下并没有 ext/pdo_mysql
查看已安装的 php 扩展
$ php -m
# 需要安装 pdo, mysqlnd, pdo_mysql。我这里已安装 pdo,下面分别安装 mysqlnd, pdo_mysql
# 查看 php 版本
$ php -v
在 php 官网 http://www.php.net/downloads.php 上下载对应的 php 源码
$ wget http://am1.php.net/distributions/php-7.0.33.tar.gz
tar -zxvf php-7.0.33.tar.gz

安装 mysqlnd

1
2
3
4
5
6
7
8
9
$ cd php-7.0.33.tar.gz/ext/mysqlnd
$ cp config9.m4 config.m4
$ sed -ie "s{ext/mysqlnd/php_mysqlnd_config.h{config.h{" mysqlnd_portability.h
$ /usr/bin/phpize
$ ./configure --with-php-config=/usr/bin/php-config
# 如果报错 error: Cannot find OpenSSL's <evp.h>,加 --with-openssl-dir
# ./configure --with-php-config=/usr/bin/php-config --with-openssl-dir=/usr/include/openssl
$ make & make install
# 安装完成,显示 Libraries have been installed in: 为 mysqlnd.so 的目录

安装 pdo_mysql

1
2
3
4
5
$ cd php-7.0.33.tar.gz/ext/pdo_mysql
$ /usr/bin/phpize
$ ./configure --with-php-config=/usr/bin/php-config --with-pdo-mysql=/usr/
$ make & make install
# 安装完成,显示 Libraries have been installed in: 为 pdo_mysql.so 的目录

配置 php.ini

1
2
3
4
5
6
7
8
9
10
# 将以上生成的 .so 文件拷贝到存放 .so 文件的目录
$ sudo cp /xxx/mysqlnd.so /usr/lib64/php/modules/
$ sudo cp /xxx/pdo_mysql.so /usr/lib64/php/modules/
# 修改 php.ini
$ sudo vim /etc/php.ini
extension_dir="/usr/lib64/php/modules/"
# 在最后加上
extension=pdo.so
extension=mysqlnd.so
extension=pdo_mysql.so

测试是否已安装成功

1
2
3
$ php -m 
# 查看是否已安装 pdo, mysqlnd, pdo_mysql
# 如果报错,应该是还缺少某些扩展,继续在 ext 中安装相应的扩展

重启 php-fpm

1
2
3
# 安装成功后,重启 php-fpm
$ sudo service php-fpm restart
# 查看 phpinfo(),确认 pdo_mysql 已安装
-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------