Php 致命错误:调用未定义的函数mysqli_connect()

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

两天来我一直在努力解决这个问题,但不幸的是没有结果。让我告诉你我关于这个问题的故事。我在一个网站上创建了一个应用程序,该应用程序处理评论。但是,我试图把它放在另一个站点上,我复制了php文件和旧站点的sql文件,并将它们移动到了新站点(它们位于不同的FTP服务器上)。当我试图从应用程序转到页面时,我收到以下致命错误:

致命错误:调用未定义的函数mysqli_connect()

我为连接数据库而编写的代码如下(带有隐藏凭据):


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

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

如果您自己托管服务器,请在php.ini文件中删除扩展名extension=php_mysqli.dll前面的分号,请执行以下操作:


如果您自己托管服务器,并且该服务器恰好是Apache,那么即使您在php.ini中有未注释的
extension=php_mysqli.dll
,也会出现此错误

您还需要使用Apache的httpd.conf中的
PHPIniDir
指令告诉Apache在哪里可以找到php.ini

AddHandler application/x-httpd-php .php
PHPIniDir "<path-to-folder-where-php-ini-lives>"
AddHandler应用程序/x-httpd-php.php
PHPIniDir“”

在Ubuntu上,我必须安装
php5-mysql
扩展:

apt-get install php5-mysql

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


extension=php_mysql.dll


**如果记录了此错误,则将路径添加到此dll文件,例如
扩展名=C:\Php\Php-??-nts-Win32-VC11-x86\ext\Php_mysql.dll

Php_mysqli.dll
Php_pdo_mysql.dll
执行相同的操作。保存并再次运行代码。

对话延迟

如果安装了模块并正确设置了PHP.INI文件,请检查apache错误日志,了解以下内容:

PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u mysqli.dll”-找不到指定的模块

在本例中,您的扩展目录不是您认为的那样。您可能需要明确设置它,如下所示:

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

新服务器上未安装Mysqli。运行phpinfo()进行确认

<?php 

phpinfo();
只要做就行了

sudo-apt安装php-mysqli


在Raspberry Pi上,它工作得非常完美,并且与版本无关。我必须安装php5 mysql扩展

apt-get install php5-mysql
安装客户端后,应重新启动Web服务器。如果您使用的是apache,以下操作应该可以正常工作:

sudo service apache2 restart
如果您使用的是ubuntu 16.04(或者更高版本),那么您已经有了这个模块,但默认情况下没有启用。只要这样做:

sudo phpenmod mysqli

我的在centos7上的php7有点不同

在/etc/php.ini中

);扩展名=mysqli


extension=mysqli

所以这可能不是您的问题,但我一直在努力解决这个错误。我发现了问题的根源,尽管我无法解释原因

对我来说,mysqli_connect在任何子目录的页面上进行连接时工作正常。但是,由于某种原因,根目录中页面上引用的同一代码返回此错误。奇怪的是,它在根目录下的MAMP中的本地主机环境中工作正常,但在共享主机上却不是

在努力找出这个“PHP致命错误”给了我“Error 500”白色屏幕的原因之后,我仔细阅读了代码,在PHP手册()建议的错误处理中偶然发现了这段代码


我随机决定删除它,瞧,删除与根目录中工作的数据库的连接。也许有比我更聪明的人可以为任何有类似问题的人解释这一点。

我按照下面的链接解决了这个问题。确保启用以下模块。
php-r'phpinfo();'|grep-i mysqli

链接:

未启用服务器mysqli扩展中的查找行。检查mysqli是否已启用
phpinfo()
请在下面的链接中启用mysqli扩展以解决我的问题:如果您来自php storm->或没有可用的php mysqli包。CentOS 6.9版(最终版)。我应该怎么做?是的,我也收到了同样的消息“没有可用的php mysqli包”,该怎么做?我建议在Centos 7上使用适用于PHP5.6的IUS repo。阅读位于的文档。此外,如果您使用的是Ubuntu/Debian,请检查“/etc/php5/apache2/php.ini”文件中是否启用了扩展名“extension=mysqli.so”(未注释)。然后重新启动服务器“service apache2 restart”。同时重新启动Apache。在我的情况下,它可以正常工作。我必须运行sudo apt get install php5.6-mysql,然后重新启动Apache sudo service apache2restart@ScottyBlades仅尝试
sudo apt
。我像《魅力》一样编辑手风琴作品!此外,请始终检查PHP和Apache错误日志。我在php.ini中使用“#”而不是“;”来标记注释,并从网页中得到奇怪的错误(包括“调用未定义的函数mysqli_connect()”)。或者
extension=mysqli
。类似于archlinux,在/etc/php/php.ini中取消注释。这给我带来了一些新的信息。。。但它似乎不是默认安装在WSL Ubuntu18上的……”警告:模块mysqli ini文件不存在于/etc/php/7.2/mods-available“如果sudo-apt-get-install php7.2-mysqli缺少该文件,您可以通过

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