在PHP中mysql_connect模块已经逐渐被弃用,我在搭建环境时也没有再安装mysql扩展,但是今天在维护一个老项目时,出现报错

Fatal error: Uncaught Error: Call to undefined function mysql_connect()

于是google一下,发现如果php和mysql都已经安装完成了,可以使用phpize工具手动编译生成mysql.so扩展来解决

下面是操作步骤:
1.进入php源码的ext/mysql目录;注意php7以上;没有mysql目录了;改成mysqli 或者mysqlnd了;

#安装mysql
apt-get install libmysqld-dev 
root@DK:/home/daokr/downfile/php-7.0.0/ext/mysqli

2.运行phpize,在该目录下生成一个configure文件(php安装目录:/home/php/bin/)目录下可以找到

root@DK:/home/daokr/downfile/php-7.0.0/ext/mysqli# /home/php/bin/phpize

3.运行configure,指明php-config文件位置(/home/php/bin/php-config)和mysql安装目录(/usr/share/mysql)

如果是默认安装的mysql 则不填;如果填写可以看下配置文件参数说明;

root@DK:/home/daokr/downfile/php-7.0.0/ext/mysqli# ./configure --help |grep mys
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
--enable-embedded-mysqli
--with-mysql-sock
=SOCKPATH

--with-mysqli 加入mysqli支持,没有设置默认是mysqlnd
--with-mysql-sock=SOCKPATH 指定mysql套接字文件位置,如果没指定则搜索默认位置

查找到mysql配置文件的位置

root@DK:/usr/bin# find / -name "mysql_config"
/usr/bin/mysql_config
然后开始配置并安装:
./configure --with-php-config=/home/php/bin/php-config --with-mysqli=/usr/bin/mysql_config

然后

make && make install

5.修改php.ini文件,添加mysql.so扩展配置,保存退出

extension=mysql.so

6.重启php-fpm

service php-fpm restart

7.测试,在web目录下添加php文件,如/usr/local/nginx/html/mysql.php

<?php
$con = mysql_connect('localhost','root','');
if($con){
die('ok');
}else{
die('Could not connect: ' . mysql_error());
}

访问URL,如:http://192.168.8.9/mysql.php
显示ok,则配置成功

$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'daokrdb'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8"); //使用哪个个数据库
mysqli_select_db( $conn, 'daokrdb' );
$sql = 'SELECT * FROM t_users';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('无法读取数据: ' . mysqli_error($conn));
}
echo '<table border="1" width="100%"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
echo "<tr><td> {$row['id']}</td> ".
"<td>{$row['title']} </td> ".
"<td>{$row['author']} </td> ".
"<td>{$row['submission_date']} </td> ".
"</tr>";
}
echo '</table>';
mysqli_close($conn);

8.php.ini 配置说明

这是配置指令的简短说明。

mysqli.allow_local_infile integer

允许Mysql的Load Data语句访问PHP角度看的本地文件。

mysqli.allow_persistent integer

开启使用mysqli_connect()函数创建持久化连接的能力。

mysqli.max_persistent integer

可以创建的持久化连接的最大数量,设置为0表明不限制。

mysqli.max_links integer

每个进程中Mysql连接的最大数量。

mysqli.default_port integer

当没有指定其他端口号时使用的默认的用于连接数据库服务器的TCP端口号。如果没有设置默认值, 端口号将会按照顺序从环境变量MYSQL_TCP_PORT/etc/services 文件中的mysql-tcp条目或编译期的MYSQL_PORT常量等位置获取。 Win32仅使用MYSQL_PORT常量。

mysqli.default_socket string

当连接到本地数据库服务器时如果没有指定其他socket名称,使用的默认socket名称。

mysqli.default_host string

当连接到数据库服务器时, 如果没有指定其他主机地址,使用的默认服务器主机。不要在 安全模式下使用。

mysqli.default_user string

当连接到数据库服务器时,如果没有指定其他用户名,使用的默认用户名。不要在 安全模式下使用。

mysqli.default_pw string

当连接到数据库服务器时,如果灭有指定其他密码,使用的默认密码。不要在 安全模式下使用。

mysqli.reconnect integer

连接丢失时是否自动重新连接。

mysqli.rollback_on_cached_plink bool

Used for rollbacking connections put back into the persistent connection pool.

mysqli.cache_size integer

仅可用于 mysqlnd

用户不能通过API调用或运行时配置来设置MYSQL_OPT_READ_TIMEOUT。 注意,如果可能这样做那么libmysql和流对MYSQL_OPT_READ_TIMEOUT 的值将会有不同的解释。

PHP安装mysql.so扩展及相关PHP.ini 配置参数说明的更多相关文章

  1. PHP安装mysql.so扩展

    在PHP中mysql_connect模块已经逐渐被弃用,我在搭建环境时也没有再安装mysql扩展,但是今天在维护一个老项目时,出现报错 Fatal error: Uncaught Error: Cal ...

  2. MySQL慢查询日志相关的文件配置和使用。

    MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可 ...

  3. mac安装mysql的两种方法(含配置)

    1.使用安装包安装mysql 双击打开安装文件 双击pkg文件安装 一路向下,记得保存最后弹出框中的密码(它是你mysql root账号的密码) 正常情况下,安装成功. 此时只是安装成功,但还需要额外 ...

  4. 如何在PHP7中安装mysql的扩展

    相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可 ...

  5. CentOS 安装 MySQL PDO 扩展

    yum install php-pdo_mysql sudo service php-fpm restart

  6. 安装mysql apache php smb

    1 SMB LinuX下SMB的配置 使用Smb进行连接的命令: smbclient //192.168.128.1/Share 今天要在LINUX之间以及LINUX与WINDOWS之间互相传送文件, ...

  7. centos6 安装mysql

    如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--Cen ...

  8. Linux下yum安装MySQL yum安装MySQL指定版本

    yum安装MySQL 1. 查看有没有安装过     yum list installed MySQL* (有存在要卸载yum remove MySQL*)     rpm -qa | grep my ...

  9. Linux安装mysql过程(转+完善)

    http://blog.csdn.net/jerome_s/article/details/52883234yum 安装MySQL   1. 检查安装情况           查看有没有安装过:   ...

随机推荐

  1. Spring Cloud--Hystrix服务熔断(线程隔离/服务降级)代码实现

    一旦服务阻塞就进行服务降级或线程隔离.要不然就会导致大面积服务的瘫痪,Hystrix就是干这个的,一出现不健康的服务就进行熔断,不阻塞后面线程的执行. 引入依赖: 加注解: 这三个注解可以用一个注解搞 ...

  2. 获取电脑 ip 地址 及系统

    public static void main(String[] args) throws UnknownHostException { //获取电脑系统 结果:os.name:Windows 10 ...

  3. Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束

    如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”, 请先检查你的DbContext中UseOr ...

  4. ③ Python3.0 数字类型

    Python3 的六个标准数据类型中:不可变数据(3 个):Number(数字).String(字符串).Tuple(元组):可变数据(3 个):List(列表).Dictionary(字典).Set ...

  5. Java电商项目,秒杀,抢购等高并发场景的具体场景和一些概念以及处理思路

    这里我借鉴了网上其他大佬的观点: 一:高并发带来的挑战 原因:秒杀抢购会经常会带来每秒几万的高并发场景,为了更快的返回结果给用户. 吞吐量指标QPS(每秒处理请求数),假设一个业务请求响应耗时为100 ...

  6. Awesome Mac OS Command Line 中文翻译

    awesome-macos-command-line 收集了很多有趣的 Mac 终端命令. 看了一遍后,发现帮助很大. 见识许多没有使用过的命令,加深了对 Mac 的认识. 所以翻译成了中文,共享给其 ...

  7. Vue2.0的核心思想

    Vue的核心思想为数据驱动和组件化. 一.数据驱动——双向绑定 Vue是一种MVVM框架.而DOM是数据的一个种自然映射.传统的模式是通过Ajax请求从model请求数据,然后手动的触发DOM传入数据 ...

  8. SpringMVC框架笔记02_参数绑定返回值文件上传异常处理器JSON数据交互_拦截器

    目录 第1章 高级参数的绑定 1.1 参数的分类 1.2 数组类型的参数的绑定 1.3 集合类型的参数的绑定 第2章 @RequestMapping的用法 2.1 URL路径映射 2.2 请求方法限定 ...

  9. kubernetes-使用Calico配置NetworkPolicy

    安装网络插件Calico 先下载好yml,因为我的虚拟机地址(192.168.17.180)在192.168.0.0/16网段中 所以要修改 wget https://docs.projectcali ...

  10. zabbix Server 4.0 监控TCP的12种状态

      zabbix Server 4.0 监控TCP的12种状态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家对TCP三次握手比较熟悉了,都知道当发生DOSS攻击时,客户端发送 ...