人才社区

 找回密码
 免费入驻

QQ登录

只需一步,快速开始

搜索
查看: 195|回复: 0

[已解决] ThinkPHP3.2.X不支持php7以上版本的完美解决方法

[复制链接]

51

主题

53

帖子

390

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
390
发表于 2019-3-30 12:56:49 | 显示全部楼层 |阅读模式
相对与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来提升服务器的效率,又要保证老的程序能够运行,如何做呢?

我们了解啦PHP7的变化之后大家应该知道,原来是PHP7不支持mysql的扩展,而thinkphp 3.2.3用到了扩展,所以解决方法有以下两种:


方法一、在/ThinkPHP/ThinkPHP.php引入文件中加入以下代码:
  1. if(!function_exists('mysql_connect')){
  2. $dbname = 'job_dljfc_com';        //数据库名称
  3.   
  4.     function mysql_connect($dbhost, $dbuser, $dbpass){
  5.         global $dbport;
  6.         global $dbname;
  7.         global $mysqli;
  8.         $mysqli = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
  9.         //如果$dbhost不含端口信息,侧上面一行使用:$mysqli = mysqli_connect("$dbhost:3306", $dbuser, $dbpass, $dbname);
  10.         return $mysqli;
  11.         }
  12.     function mysql_select_db($dbname){
  13.         global $mysqli;
  14.         return mysqli_select_db($mysqli,$dbname);
  15.         }
  16.     function mysql_fetch_array($result){
  17.         return mysqli_fetch_array($result);
  18.         }
  19.     function mysql_fetch_assoc($result){
  20.         return mysqli_fetch_assoc($result);
  21.         }
  22.     function mysql_fetch_row($result){
  23.         return mysqli_fetch_row($result);
  24.         }
  25.     function mysql_query($query){
  26.         global $mysqli;
  27.         return mysqli_query($mysqli,$query);
  28.         }
  29.     function mysql_escape_string($data){
  30.         global $mysqli;
  31.         return mysqli_real_escape_string($mysqli, $data);
  32.         }
  33.     function mysql_real_escape_string($data){
  34.         return mysql_real_escape_string($data);
  35.         }
  36.     function mysql_close(){
  37.         global $mysqli;
  38.         return mysqli_close($mysqli);
  39.         }
  40.    function mysql_get_server_info(){
  41.              global $mysqli;
  42.         return mysqli_close(mysqli_get_server_info($mysqli));
  43.    }
  44. }
复制代码


方法二、PHP7中安装mysql的扩展

参考https://blog.csdn.net/shengerjianku/article/details/55060945

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有非常大的性能提升.如果您还在使用其它版本,可以升级一下试试;升级后如果是有老程序需要mysql扩展支持的话,就可以用到人才港精品源码论坛本帖子所提到了方法哦。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费入驻

本版积分规则

快速回复 返回顶部 返回列表