Linux 环境下 PHP 扩展的变异编译与安装
Posted 被遗忘的优雅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 环境下 PHP 扩展的变异编译与安装相关的知识,希望对你有一定的参考价值。
(操作系统 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);
以上是关于Linux 环境下 PHP 扩展的变异编译与安装的主要内容,如果未能解决你的问题,请参考以下文章
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)