call mysql_connect_Call to undefined function mysql_connect()

PHP5 报错Fatal error: Call to undefined function mysql_connect()

解决方法一

在PHP代码中使用phpinfo()函数查看PHP基本信息

从PHP5.0开始mysql_connect()就不推荐使用了,到PHP7.0就直接被废弃了,如果PHP为7.0及以上版本的话用mysqli_connect()代替

但是我的PHP版本是5.4的,所以可以确定不是这个问。

解决方法二

安装的php缺少mysql模块导致,这种情况就就直接yum安装。

yum install php-mysql php-mysqlnd

解决方法三,

如果前两种方法都不能解决,试着在php.ini配置文件中指定mysql模块的扩展

extension="/usr/lib64/php/modules/mysql.so"

但是我这里比较蛋疼的是指定了mysql.so 之后又包了另外一个错。蛋疼.....

NOTICE: PHP message: PHP Warning:  PHP Startup: mysql: Unable to initialize module

原因是phpize和php模块的版本不一致导致的,我这里的原因是因为服务器上存在两个不同版本的phpize,(因为我服务器上安装了两个php)

由于php连接mysql需要用到mysql.so 这时需要手动编译生成mysql.so扩展。

结论:使用phpize工具能够生成mysql.so,但是必须加上"--with-mysql=mysql客户端的路径"。也就是mysql.so模块必须用到mysql客户端才行。

可以这样理解,mysql.so内部会调用mysql客户端,以便实现连接mysql数据库服务器。

我们常常用到的mysql_connect()可能就是调用了mysql客户端才能完成连接数据库的操作。

生成mysql.so的过程

需要用到php的源码包才行。通过源码包中提供的phpize文件(一个专门挂接php扩展的工具)

第一步:进入php源码中的"ext/mysql"目录下

cd /root/php-5.4.45/ext/mysql

第二步:在当前目录下运行phpize

/usr/local/php5/bin/phpize --with-mysql=/usr/local/mysql/

phpize的规则:去哪个目录下运行phpize文件,那么就会在该目录下生成一个configure文件。(生成过程中会用到config.m4这个文件,这就是为什么要进入到这个目录去执行的原因。 )

./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysql=/usr/local/mysql/

make

make install

这里最关键的是通过--with-mysql参数告诉mysql客户端的位置。这样才能生成mysql.so。

编译生成.so文件。最终要的东西

make install 之后会输出以下信息。

Installing shared extensions:  /usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/

在php.ini配置文件中指定mysql模块的扩展

extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/mysql.so"

重新加载php

一切都结束了-----------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值