zoukankan      html  css  js  c++  java
  • 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 的值将会有不同的解释。

  • 相关阅读:
    fedora上部署ASP.NET——(卡带式电脑跑.NET WEB服务器)
    SQL Server 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其它适合的错误日志
    8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
    FTP 服务搭建后不能访问问题解决
    指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
    Linux 安装MongoDB 并设置防火墙,使用远程客户端访问
    svn Please execute the 'Cleanup' command. 问题解决
    .net 操作MongoDB 基础
    oracle 使用绑定变量极大的提升性能
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8854344.html
Copyright © 2011-2022 走看看