mysqli编译php(mysql 编译)

本文目录一览:

如何重新编译PHP使其支持mysqli

添加扩展的基本步骤:

1、进入PHP源代码目录:# cd /tmp/php-5.2.14/

2、再进入要添加的mysqli扩展源码目录:# cd ext/mysqli/

2、调用已经编译好的php里面的phpize:# /usr/local/php/bin/phpize

3、然后configure:# ./configure –with-php-config=/usr/local/php/bin/php-config –with-mysqli=/usr/local/MySQL/bin/mysql_config

(/usr/local/mysql 为mysql的安装目录)

4、make make install

5、编译之后,自动把mysqli.so放到了默认的php扩展目录下,我的为 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

(phpinfo可查看或者执行命令/usr/local/php/bin/php-config –extension-dir )

再修改php.ini 找到extension_dir 默认路径为 extension_dir=”./” 我修改后才启动加载的

在下面添加extension = “mysqli.so” 保存即可

PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): …

背景:把mysql换成mysqli时出现,连接数过多,其实际上并不是,原因是我挪动了一下php的sock文件位置导致,因这几个socket修改没有修改完全,于是出现了too

many

connections

,从mysql里show

processlist并没有发现真的有连接,其实用tshark抓下包估计能看到(),并没有发出请求,而估计是mysqli的客户端自己报出来的,别看这个问题小,搞了老半天,都想重新安装Php了,发现原来是路径写错了同时mysqli的客户端提示连接数过多的误提示导致方向走错了。如下:

[root@iZ25z0ugwgtZ

etc]#

grep

-r

“mysql.sock”

./

./php.ini:pdo_mysql.default_socket=/data/runsock/mysqlsock/mysql.sock

./php.ini:;mysql.default_socket

=

/tmp/mysql.sock

./php.ini:mysql.default_socket

=

/data/runsock/mysqlsock/mysql.sock

./php.ini:mysqli.default_socket

=

/data/runsock/mysql.sock

//这个位置被挪动到,/data/runsock/mysqlsock/mysql.sock导致。

修改后记得重启动php-fpm:

[root@iZ25z0ugwgtZ

etc]#

service

php-fpm

restart

Gracefully

shutting

down

php-fpm

.

done

Starting

php-fpm

done

______________________排查要点如下_______________________________

warning:

mysqli::real_connect():

(hy000/1040):

too

many

connections

in:

出现场景

:手动编译安装mysql,并制定安装位置,php以localhost方式连接mysql

原因分析

:手动编译安装制定位置后所有的mysql文件都在制定的目录或者data目录下面,php默认只会寻找/temp/mysql.sock找这个sock文件,所以会导致sock文件无法找到。

解决方法

1.给sock文件做个软链

ln

-s

/data/mysqldb/mysql.sock

/tmp/mysql.sock;

或者

2.修改php的默认mysql.sock连接地址

mysql.default_socket=/data/mysqldb/mysql.sock

3.使用tcp

socket的方式进行连接

mysql(‘127.0.0.1′,’username’,’passwod’);

下面给大家介绍PHP

mysql_connect()

函数

定义和用法

mysql_connect()

函数打开非持久的

MySQL

连接。

语法

mysql_connect(server,user,pwd,newlink,clientflag)

参数

描述

server

可选。规定要连接的服务器。

可以包括端口号,例如

“hostname:port”,或者到本地套接字的路径,例如对于

localhost

“:/path/to/socket”。

如果

PHP

指令

mysql.default_host

未定义(默认情况),则默认值是

‘localhost:3306’。

user

可选。用户名。默认值是服务器进程所有者的用户名。

pwd

可选。密码。默认值是空密码。

newlink

可选。如果用同样的参数第二次调用

mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数

new_link

改变此行为并使

mysql_connect()

总是打开新的连接,甚至当

mysql_connect()

曾在前面被用同样的参数调用过。

clientflag

可选。client_flags

参数可以是以下常量的组合:

MYSQL_CLIENT_SSL

使用

SSL

加密

MYSQL_CLIENT_COMPRESS

使用压缩协议

MYSQL_CLIENT_IGNORE_SPACE

允许函数名后的间隔

MYSQL_CLIENT_INTERACTIVE

允许关闭连接之前的交互超时非活动时间

返回值

如果成功,则返回一个

MySQL

连接标识,失败则返回

FALSE。

提示和注释

注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用

mysql_close()

关闭了。

提示:要创建一个持久连接,请使用

mysql_pconnect()

函数。

例子

?php

$con

=

mysql_connect(“localhost”,”mysql_user”,”mysql_pwd”);

if

(!$con)

{

die(‘Could

not

connect:

.

mysql_error());

}

//

一些代码…

mysql_close($con);

?

php 5.2.8不支持mysqli扩展库吗

mysqli.dll是PHP对mysql新特性的一个扩展支持。在PHP5中可以在php.ini中加载

mysql后面的i,指improved, interface, ingenious, incompatible or incomplete(改扩展仍在开发中,因为MYSQL4。1和MYSQL5都没有正式推出尚在开发中,新的特性没有完全实现)

mysqli想实现的目标具体有:

-更简单的维护

-更好的兼容性

-向后兼容

mysql(指PHP中的模块)发展到现在显得比较凌乱,有必要重新做下整理。同时,有必要跟上MYSQL(DBMS)的发展步伐,加入新的特性的支持,以及适应MYSQL(DBMS)以后的版本。所以诞生了mysqli.dll

mysqli.dll的特性:

-可以和mysql.dll一样的方式使用

-支持OO接口,简简单单调用

-支持MYSQL4。1引入的新特性

-通过mysqli_init() 等相关函数,可以设置高级连接选项

php怎么用mysqli链接数据库和输出sql

一、mysql与mysqli的概念相关:

1、mysql与mysqli都是php方面的函数集,与mysql数据库关联不大。

2、在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程3、在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库

二、mysql与mysqli的区别:

1、mysql是非持继连接函数,mysql每次链接都会打开一个连接的进程。

2、mysqli是永远连接函数,mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。

三、mysql与mysqli的用法:

1:mysql(过程方式):

$conn =

mysql_connect(‘localhost’, ‘user’, ‘password’); //连接mysql数据库mysql_select_db(‘data_base’);

//选择数据库$result =

mysql_query(‘select * from data_base’);//第二个可选参数,指定打开的连接$row =

mysql_fetch_row( $result ) ) //只取一行数据echo

$row[0]; //输出第一个字段的值

PS:mysqli以过程式的方式操作,有些函数必须指定资源,比如mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,’资源标识’)的资源标识是可选的,默认值是上一个打开的连接或资源。

2、mysqli(对象方式):

$conn = new

mysqli(‘localhost’, ‘user’, ‘password’,’data_base’);//要使用new操作符,最后一个参数是直接指定数据库//假如构造时候不指定,那下一句需要$conn – select_db(‘data_base’)实现$result =

$conn – query( ‘select * from data_base’ );$row =

$result – fetch_row(); //取一行数据echo

row[0]; //输出第一个字段的值

使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename’);会报错,提示如下:

Fatal error: Class ‘mysqli’ not found in …

一般是mysqli是没有开启的,因为mysqli类不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

四、mysql_connect()与mysqli_connect()

1.使用mysqli,可以把数据库名称当作参数传给mysqli_connect()函数,也可以传递给mysqli的构造函数;

2.如果调用mysqli_query()或mysqli的对象查询query()方法,则连接标识是必需的。

linux下的php到底是怎么加载mysqli模块的

添加扩展的基本步骤:

1、进入PHP源代码目录:# cd /tmp/php-5.2.14/

2、再进入要添加的mysqli扩展源码目录:# cd ext/mysqli/

2、调用已经编译好的php里面的phpize:# /usr/local/php/bin/phpize

3、然后configure:# ./configure –with-php-config=/usr/local/php/bin/php-config –with-mysqli=/usr/local/MySQL/bin/mysql_config

(/usr/local/mysql 为mysql的安装目录)

4、make make install

5、编译之后,自动把mysqli.so放到了默认的php扩展目录下,我的为 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

(phpinfo可查看或者执行命令/usr/local/php/bin/php-config –extension-dir )

再修改php.ini 找到extension_dir 默认路径为 extension_dir=”./” 我修改后才启动加载的

在下面添加extension = “mysqli.so” 保存即可

extension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/”

extension = “mysqli.so”

6、重启apache:# service httpd restart

nginx和php 怎么安装mysqli扩展

在 centos 下编译安装 php 时,有时候经常会忘了某些扩展,比如 pdo,mysqli,但是到扩展目录下,我们又找不到相应的 扩展文件,(.so 文件) ,这样的情况下只能 编译安装该模块,生成对应的 so 文件,然后在 php.ini 中添加相应的 扩展记录,重启 php就可以了,我们以安装 mysqli 为例。

首先进入 php 源码包 如果 找不到可以可下载一个 地址在这里:解压

tar xvzf php-5.2.17.tar.gz

cdphp-5.2.17/ext/mysqli/

然后运行 php 安装目录下的 phpize

/usr/local/nginx_php-5.2.17/bin/phpize

(根据自己的 php 安装目录来查找,不一定是这个目录,如果找不到,可以根据 phpinfo() 来查看)然后编译安装 mysqli 扩展

#./configure –prefix=/usr/local/mysqli –with-php-config=/usr/local/nginx_php-5.2.17/bin/php-config –with-mysqli=/usr/local/mysql/mysql_config安装

make make install

然后在 php 的扩展目录下已经生成了 mysqli.so 文件打开 php.ini 文件,看是否有如下内容

extension_dir = “/usr/local/nginx_php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/”如果没有就添加上

再添加一条:

extension=mysqli.so

保存。

重启 php。可以看到 mysqli 已经安装完成了。

原创文章,作者:VNNDE,如若转载,请注明出处:https://www.506064.com/n/129667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VNNDEVNNDE
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • MySQL bigint与long的区别

    本文将从数据类型定义、存储空间、数据范围、计算效率、应用场景五个方面详细阐述MySQL bigint与long的区别。 一、数据类型定义 bigint在MySQL中是一种有符号的整…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • MySQL左连接索引不生效问题解决

    在MySQL数据库中,经常会使用左连接查询操作,但是左连接查询中索引不生效的情况也比较常见。本文将从多个方面探讨MySQL左连接索引不生效问题,并给出相应的解决方法。 一、索引的作…

    编程 2025-04-28
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • CentOS 7在线安装MySQL 8

    在本文中,我们将介绍如何在CentOS 7操作系统中在线安装MySQL 8。我们会从安装环境的准备开始,到安装MySQL 8的过程进行详细的阐述。 一、环境准备 在进行MySQL …

    编程 2025-04-27

发表回复

登录后才能评论