第一版:
问题:PHP7已经彻底废弃了传统的mysql_connect()函数,源码安装包里,也不再提供传统mysql函数库的支持(PHP推荐使用mysqli或者pdo_mysql)。这样带来的问题是,运行老的PHP程序,比如WordPress,就会出现数据库连接失败的情况,表现出来的特征就是这个让人抓狂的错误:Fatal error: Uncaught Error: Call to undefined function mysql_connect()。这时,我们要么选择回退到PHP5.6,或者选择安装PHP7的mysql扩展。
下载PHP7的传统mysql扩展:
PHP7的源码包里面没有mysql的代码,需要另外下载,下载地址:
http://git.php.net/?p=pecl/database/mysql.git;a=summary
或者
可以使用WinSCP将下载包传到Linux系统。随便哪个目录都可以,然后运行下面的命令:
我用的ubuntu,先要安装autoconf这个工具:
apt install autoconf
然后:
tar zxf mysql-230a828.tar.gz cd mysql-230a828 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql make && make install
然后修改php.ini
添加extension=mysql.so
DONE!
补充一个经验:
wordpress程序默认关闭了php的debug输出,这时如果出现连接数据库错误,屏幕一篇空白,什么都没有,我们需要打开php的debug开关来查看具体是什么错误,具体在wp-config.php文件里面:
/* 将默认的false修改为true */ define(\'WP_DEBUG\', true);
第二版:
相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”.所以在以后的程序中,为了保持兼容性,要尽量减少使用mysql扩展用于数据库连接.
作为运维人员来说,既想使用PHP7来提升服务器的效率,又要保证老的程序能够运行,如何做呢?
1.去php网站上下载mysql扩展,http://git.php.net/?p=pecl/database/mysql.git;a=summary
2.解压并使用phpize工具初始化,编译:---文件包是
- #解压
- tar xzvf mysql-45881bd.tar.gz
- #进入mysql扩展目录 from www.mfbuluo.com
- cd mysql-45881bd/
- #使用phpize初始化,我的phpize在/opt/目录
- /opt/php/bin/phpize
- #编译mysql扩展,使用mysql native driver作为mysql链接库
- ./configure --with-php-config=/opt/php/bin/php-config --with-mysql=mysqlnd
- make && make install
3.接下来,我们直接编辑php.ini文件,把mysql.so拷贝到php.ini的extension_dir中,然后在php.ini中加入extension=mysql.so
4.重启php
成功之后,用phpinfo即可看到mysql扩展的信息
相对于PHP5,都说PHP7有非常大的性能提升.。
第三版:
ubuntu 17.10 上为php7安装mysql扩展
相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”.所以在以后的程序中,为了保持兼容性,要尽量减少使用mysql扩展用于数据库连接.
作为运维人员来说,既想使用PHP7来提升服务器的效率,又要保证老的程序能够运行,如何做呢?
安装环境:
系统:ubuntu 17.10
PHP版本:php7.1
安装步骤:
1.去php网站上下载mysql扩展,http://git.php.net/?p=pecl/database/mysql.git;a=summary
选择最近的一个版本,我选择的是2017-11-01更新的版本
2.解压并使用phpize工具初始化,编译:---文件包是
#解压
tar xzvf mysql-45881bd.tar.gz
#进入mysql扩展目录
cd mysql-45881bd/
#使用phpize初始化,我的phpize在/opt/目录
phpize
#编译mysql扩展,使用mysql native driver作为mysql链接库
./configure
make && make install
3.由于ubuntu 17.10版本的特殊性,接下来,添加mysql.ini扩展配置文件
#进入扩展目录
cd /etc/php/7.1/mods-availabel/
#添加mysql.ini
sudo cp mysqli.ini mysql.ini
sudo vi mysql.ini
4.启用mysql扩展,sudo phpenmod mysql
5.重启apache服务, sudo service apache2 restart
6.使用phpinfo查看确认