4.编译安装PHP7的MySQL扩展mysql.so

时间:2024-04-16 08:04:06

第一版:

问题: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工具初始化,编译:---文件包是

 

  1. #解压   
  2. tar xzvf mysql-45881bd.tar.gz   
  3. #进入mysql扩展目录  from www.mfbuluo.com   
  4. cd mysql-45881bd/    
  5. #使用phpize初始化,我的phpize在/opt/目录   
  6. /opt/php/bin/phpize   
  7. #编译mysql扩展,使用mysql native driver作为mysql链接库   
  8. ./configure --with-php-config=/opt/php/bin/php-config --with-mysql=mysqlnd   
  9. 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查看确认