致命错误:调用未定义的函数mysqli\u connect()

inn6fuwd  于 2021-06-20  发布在  Mysql
关注(0)|答案(14)|浏览(422)

两天来我一直在努力解决这个问题,但不幸的是没有结果。让我告诉你我关于这个问题的故事。我在一个网站上建立了一个应用程序,这个应用程序处理评论。但是,我试图把它放在另一个站点上,我复制了php文件,从旧站点的sql文件,并将它们移动到新站点(它们在不同的ftp服务器上)。当我试图从应用程序转到页面时,收到以下致命错误:
致命错误:调用未定义的函数mysqli\u connect()
我编写的连接到数据库的代码如下(带有隐藏凭据):

$con = mysqli_connect("","*the_name*","*the_pass*","*the_database*");
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

为什么我会出错?它在旧服务器上工作,代码我认为这不是问题,因为它在localhost上工作,而在新服务器上不工作。有人能帮我吗?

dpiehjr4

dpiehjr41#

如果您使用的是ubuntu16.04(可能是更高版本),那么您已经有了这个模块,但是默认情况下没有启用。就这么做吧:

sudo phpenmod mysqli
wz1wpwve

wz1wpwve2#

在ubuntu上我不得不安装 php5 mysql 分机:

apt-get install php5-mysql
6mzjoqzu

6mzjoqzu3#

所以这可能不是你的问题,但我一直在努力解决这个错误。我发现是什么导致了我的问题,尽管我不能真正解释为什么。
对我来说,mysqli\u connect在任何子目录的页面上建立连接时工作正常。但是由于某种原因,根目录中页面上引用的同一代码返回了此错误。奇怪的是,它在根目录的mamp中的localhost环境中运行良好,但在共享主机上却不是这样。
在努力弄清楚是什么让我从这个“php致命错误”中得到了“error500”白色屏幕之后,我浏览了代码,在php手册建议的错误处理中偶然发现了这段代码(https://www.php.net/manual/en/mysqli.error.php).

if (!mysqli_query($link, "SET a=1")) {
    printf("Error message: %s\n", mysqli_error($link));
}

我随机决定删除它,然后,瞧,连接到根目录下的数据库。也许有比我聪明的人能解释这一点,为任何与类似问题作斗争的人。

gtlvzcf8

gtlvzcf84#

对于centos,请执行以下操作:

sudo yum install php-mysqli
cx6n0qe3

cx6n0qe35#

我的在centos7上对php7有点不同。
在/etc/php.ini中
; 扩展名=mysqli

扩展名=mysqli

oymdgrw7

oymdgrw76#

我按照下面的链接来解决这个问题。确保启用以下模块。
php-r'phpinfo();'|grep-i mysqli公司
链接:https://askubuntu.com/questions/773601/php-mysqli-extension-in-ubuntu-16-04-not-working-after-upgrade-to-version-7-0-6

332nm8kg

332nm8kg7#

谈话迟到了。。。
如果安装了模块并正确设置了php.ini文件,请检查apache错误日志,查看以下内容:
php警告:php启动:无法加载动态库“c:\php\ext\php\u mysqli.dll”-找不到指定的模块。
在本例中,扩展目录不是您所认为的。您可能需要显式设置它,例如:

extension_dir="C:\xampp\php\ext"
1mrurvl1

1mrurvl18#

中没有错误,但是您的计算机上没有安装mysqli php扩展。请与您的服务提供商联系以解决此问题。

fae0ux8s

fae0ux8s9#

在默认情况下不使用php扩展时发生。在php.ini文件中,更改 ;extension=php_mysql.dllextension=php_mysql.dll .

**如果这个错误日志,那么添加路径到这个dll文件,例如 extension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll 对…做同样的事 php_mysqli.dll 以及 php_pdo_mysql.dll . 保存并再次运行代码。

2hh7jdfx

2hh7jdfx10#

如果您自己托管服务器,并且该服务器恰好是apache,那么即使您没有注解,也可能会出现此错误 extension=php_mysqli.dll 在php.ini中。
您还需要使用 PHPIniDir apache的httpd.conf中的指令

AddHandler application/x-httpd-php .php
PHPIniDir "<path-to-folder-where-php-ini-lives>"
57hvy0tb

57hvy0tb11#

在raspberry-pi上,我不得不安装php5-mysql扩展。

apt-get install php5-mysql

安装客户端后,应重新启动Web服务器。如果您使用的是apache,则以下操作应能正常工作:

sudo service apache2 restart
tyg4sfes

tyg4sfes12#

如果您自己托管服务器,请在php.ini文件中删除扩展名extension=php\u mysqli.dll前面的分号

uxh89sit

uxh89sit13#

新服务器上没有安装mysqli。运行phpinfo()进行确认。

<?php 

phpinfo();
e7arh2l6

e7arh2l614#

就这么做吧 sudo apt install php-mysqli 它工作得很好,而且是独立于版本的

相关问题