• linux-centos7 下 php 扩展的 编译与安装,以 mysqli 为例


    (操作系统 Centos7,环境版本 php7)

    01,进入到 PHP 解压后的源码包的的 ext 文件夹

    02,查看是否存在 mysqli 扩展 => ls, 如果不存在需要去响应网站下载 (百度 Google 下载)

    03,这里既是所有 PHP 官方提供的扩展,进入到 mysqli 目录 => cd mysqli

    04,执行命令 => phpize

    05,如果出现以上错误可以用 yum 安装依赖 => yum -y install autoconf => phpize

    06,配置编译参数 ./configure --with-mysqli=mysqlnd  这里要求你必须先安装了 mysqlnd

    07,配置完成后编译扩展 => make

    08,如果出现以上错误,将 mysqli_api.c 文件第 36 行的代码中的相对路径修改成如下的绝对路径

    09,比较新一点 php 版本如果扩展编译时使用默认路径,那么也可以这样配置,这种配置的好处是迁移时不需要修改

    10,再次执行 make => make install,出现如下界面为编译安装成功

    11,以上返回的路径便是扩展安装的路径,记住红框内的路径,查看模块是否安装成功

    ls /root/software/php/lib/php/extensions/no-debug-non-zts-20170718/

    12,以上的 mysqli.so 就是 mysqli 扩展

    13,修改配置文件 php.ini ( 如果找不到,请移步 https://www.cnblogs.com/lovling/p/9301851.html )

    14,在文件的最后添加如下代码,右边的路径就是 mysqli.so 所在的路径

    15,重启 php-fpm 或者 httpd (根据自己的环境选择)

    16,随意访问一个写有 <?php phpinfo() ?> 的文件,出现以下画面为安装成功

     17,一个简单的利用 mysqli 做查询的数据路例子

    <?php
    /**
     * 准备数据库连接参数,地址,账号,密码,具体库名称
     */
    $host = "192.168.200.100:3306";
    $user = "root";
    $password = "920619";
    $dbname = "test";
    
    /**
     * 实例化 mysqli 对象
     */
    $mysqli = new mysqli($host, $user, $password, $dbname);
    
    /**
     * 设置查询结果数字类型的字段不会被自定转化为字符串类型
     * 该方法要求 mysqli 扩展在安装时必须使用 mysqlnd 依赖
     * 设置编码防止乱码,互联网开发常用为 utf8 编码
     */
    $mysqli -> options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
    $mysqli-> set_charset("utf8");
    
    /**
     * 检测数据库连接是否有错,一切正常时 connect_errno 为 0
     * 当发生错误时,connect_error 记录了错误信息
     */
    if ($mysqli -> connect_errno != 0) echo $mysqli -> connect_error;
    
    /**
     * 准备一个 SQL 语句并执行,返回结果集
     */
    $sql = "SELECT * FROM user";
    $mysqli_result = $mysqli -> query($sql);
    
    /**
     * 获取查询结果返回一个关联数组,常量参数解析如下
     * MYSQLI_NUM    返回常规数组 (拒绝)
     * MYSQLI_ASSOC  返回关联数组 (推荐)
     * MYSQLI_BOTH   返回混合数组 (默认)
     */
    $result = $mysqli_result -> fetch_all(MYSQLI_ASSOC);
    
    /**
     * 关闭 mysqli 对象从而关闭数据库连接
     */
    $mysqli -> close();
    
    /**
     * 打印查询结果的详细信息
     */
    var_dump($result);
  • 相关阅读:
    云服务器迁移的那些事之一
    《编译原理》(第二版)第一章的学习笔记(一)
    vs 实用扩展
    SQL多的是,你不知道的事
    Entity Framework 批量插入 提速
    oracle 回收已删除的表
    发现一个奇怪的问题!
    看到易办网的希望...
    asp.net不认为数据库字段的空值为null
    什么是伪url?
  • 原文地址:https://www.cnblogs.com/lovling/p/9322989.html
Copyright © 2020-2023  润新知