• PHP安装mysql.so扩展及相关PHP.ini 配置参数说明


    在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表明不限制。

    每个进程中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

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

    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 的值将会有不同的解释。

  • 相关阅读:
    lyt经典版MySQL基础——进阶6:连接查询-sql92语法-内连接
    lyt经典版MySQL基础——进阶4:常见函数-分组函数
    lyt经典版MySQL基础——进阶2:条件查询
    lyt经典版MySQL基础——进阶1:基础查询
    【转】jmeter如何设置登录接口只调用一次以及遇到的问题:cookie参数放在消息头headers里面
    Kafka命令行操作
    git上无法push代码解决办法
    【转】Jenkins集成Docker镜像实现自动发布
    springboot从一个Controller中的方法跳转到另一个Controller中的方法
    window.open
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8854344.html
Copyright © 2020-2023  润新知