因为php在5.6版本之前就放弃了mysql的连接方式,所以需要安装新的插件如mysqli或者pdo来连接数据库。但是我发现我在安装php的时候没有安装nysqli或者pdo的拓展,于是有了下面的事情。
首先要进入到当初的安装目录下面:
cd /home/hailinw/Desktop/php-5.6.19/ext/mysqli
然后开始编译 ./configure --prefix=/usr/local/mysqli --with-php-config=/usr/local/nginx_php-5.2.17/bin/php-config --with-mysqli=/usr/local/mysql/mysql_config
注意,这个时候你本地可能没有mysql_config,需要你去sudo apt-get install mysql-server libmysqlclient-dev (重点是后面的这个,他会生成mysql_config文件在/usr/bin目录下)
然后去locate php-config文件,发现有好几个php-config文件
这时候每一个都去尝试configure,发现都不对,php的mysqli拓展都没有安装在/usr/local/lib/php/extensions/no-debug-non-zts-20131226/里(phpinfo可以看到自己的拓展类存放的文件夹),打开每个php-config文件发现他们的extension_dir都各不相同,有的是'/usr/local/lib/php/extensions/no-debug-non-zts-20131226' ,有的是其他不同于phpinfo里extension_dir的文件夹;
执行 ./configure --prefix=/usr/local/mysqli --with-php-config=/usr/local/nginx_php-5.2.17/bin/php-config --with-mysqli=/usr/local/mysql/mysql_config 如果php-config接的参数是不正确的extension_dir,编译会成功,但是重启php-fpm发现mysqli没有安装成功,只有选了extension_dir='/usr/local/lib/php/extensions/no-debug-non-zts-20131226'的config文件才最终成功。(我是把源文件夹下的/home/hailinw/Desktop/php-5.6.19/scripts/php-config 复制出一份覆盖了/usr/bin/php-config文件才执行成功的,不知道为什么如果直接 --with-php-config=/home/hailinw/Desktop/php-5.6.19/scripts/php-config的话总是提示找不到php-config文件,所以我才复制出来一份再编译的)
最终编译成功,拓展文件夹/usr/local/lib/php/extensions/no-debug-non-zts-20131226下有了mysqli.so;再把extension=mysqli.so写入php.ini文件尾部,重启php-fpm,最终在phpinfo里看到了mysqli.