致命错误:调用未定义函数 mysqli_connect()
Posted
技术标签:
【中文标题】致命错误:调用未定义函数 mysqli_connect()【英文标题】:Fatal error: Call to undefined function mysqli_connect() 【发布时间】:2019-09-24 01:15:20 【问题描述】:2 天来,我正在尝试解决这个问题,但不幸的是没有结果。让我告诉你我关于这个问题的故事。我在网站上构建了一个应用程序,该应用程序处理评论。但是,我试图把它放在另一个站点上,我从旧站点复制了 php 文件和 sql 文件,并将它们移动到新站点(它们位于不同的 FTP 服务器上)。当我尝试从应用程序访问页面时,我收到此 FATAL ERROR:
我编写的用于连接数据库的代码是这样的(带有隐藏凭据):
$con = mysqli_connect("","*the_name*","*the_pass*","*the_database*");
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
为什么我会收到错误消息?它可以在旧服务器上运行,我认为代码不是问题,因为它可以在 localhost 上运行,而在新服务器上则不行。谁能帮帮我?
【问题讨论】:
看起来你的服务器 mysqli 扩展没有启用。检查mysqli是否启用phpinfo()
请开启mysqli扩展
我按照以下链接解决了我的问题:askubuntu.com/questions/773601/…
如果你来自 php Storm -> intellij-support.jetbrains.com/hc/en-us/community/posts/… 或 web.archive.org/web/20200805054537/https://…
【参考方案1】:
简单地做
sudo apt install php-mysqli
完美运行,并且与版本无关
【讨论】:
它的工作原理在我的情况下,我必须运行 sudo apt-get install php5.6-mysql 然后重新启动 apache sudo service apache2 restart @ScottyBlades 仅尝试sudo apt
。我进行了相应的编辑
像魅力一样工作!
在 Lubuntu 21.04 和 PHP 7.4 上与我合作【参考方案2】:
如果您自己托管服务器,请在 php.ini 文件中删除扩展名前面的分号 extension=php_mysqli.dll
【讨论】:
另外,请始终检查您的 PHP 和 Apache 错误日志。我用“#”代替“;”在 php.ini 中标记注释并从网页得到奇怪的错误(包括“调用未定义的函数 mysqli_connect()”)。 或extension=mysqli
。【参考方案3】:
对于CentOS,执行:
sudo yum install php-mysqli
【讨论】:
没有包 php-mysqli 可用。 CentOS 6.9 版(最终版)。我该怎么办? 是的,我也收到了同样的消息“没有可用的包 php-mysqli”,怎么办? 我建议在 Centos 7 上使用 IUS repo for php 5.6。阅读ius.io的文档【参考方案4】:在 Ubuntu 上我必须安装 php5 mysql
扩展:
apt-get install php5-mysql
【讨论】:
此外,如果您使用的是 Ubuntu/Debian,请检查“/etc/php5/apache2/php.ini”文件中的扩展“extension=mysqli.so”是否已启用(未注释)。然后重启服务器“service apache2 restart”。 这不适用于 UbuntueE: Package 'php5-mysql' has no installation candidate
【参考方案5】:
默认情况下不使用 php 扩展时发生。在您的 php.ini 文件中,将;extension=php_mysql.dll
更改为 extension=php_mysql.dll
。 **如果记录此错误,则添加此 dll 文件的路径,例如extension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll
对 php_mysqli.dll
和 php_pdo_mysql.dll
执行相同操作。保存并再次运行您的代码。
【讨论】:
同时重启 Apache。【参考方案6】:如果您安装了模块并正确设置了 PHP.INI 文件,请检查您的 apache 错误日志中是否有以下内容:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mysqli.dll' - The specified module could not be found.
在这种情况下,您的扩展目录并不是您想象的那样。您可能需要明确设置它,如下所示:
extension_dir="C:\xampp\php\ext"
【讨论】:
【参考方案7】:我在 centos7 上的 php7 有点不同。
在 /etc/php.ini 中
;扩展=mysqli
到
extension=mysqli
【讨论】:
类似change 用于archlinux,在/etc/php/php.ini 中取消注释。【参考方案8】:如果您自己托管服务器,并且该服务器恰好是 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>"
【讨论】:
【参考方案9】:在 Raspberry Pi 上,我必须安装 php5 mysql 扩展。
apt-get install php5-mysql
安装客户端后,应重新启动网络服务器。如果您使用的是 apache,以下应该可以工作:
sudo service apache2 restart
【讨论】:
【参考方案10】:如果您使用 ubuntu 16.04(可能及更高版本),您已经拥有此模块,但默认情况下未启用。只需这样做:
sudo phpenmod mysqli
【讨论】:
嗯,这给了我一些新信息......但它似乎没有默认安装在 WSL Ubuntu 18 上......'警告:模块 mysqli ini 文件在 /etc/ 下不存在php/7.2/mods-available' 如果sudo apt-get install php7.2-mysqli
缺少可以安装【参考方案11】:
没有错误,但是你的机器上没有安装mysqli PHP扩展。请联系您的服务提供商以解决此问题。
【讨论】:
【参考方案12】:Mysqli 未安装在新服务器上。运行 phpinfo() 确认。
<?php
phpinfo();
【讨论】:
【参考方案13】:所以这对你来说可能不是问题,但我一直在努力解决这个错误。我发现了导致我的问题的原因,但我无法真正解释原因。
对我来说,mysqli_connect 在任何不同子目录的页面上都可以正常工作。但是由于某种原因,在根目录中的页面上引用的相同代码返回了此错误。奇怪的是,它在根目录中 MAMP 的本地主机环境中运行良好,但在我的共享主机上却没有。
在努力从这个“PHP 致命错误”中找出是什么给了我“错误 500”白屏之后,我浏览了代码并在 PHP 手册 (@987654321) 建议的错误处理中偶然发现了这段代码@)。
if (!mysqli_query($link, "SET a=1"))
printf("Error message: %s\n", mysqli_error($link));
我随机决定删除它,瞧,连接到在根目录中工作的数据库。也许比我更聪明的人可以为任何遇到类似问题的人解释这一点。
【讨论】:
【参考方案14】:我按照下面的链接来解决这个问题。确保启用以下模块。 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
【讨论】:
以上是关于致命错误:调用未定义函数 mysqli_connect()的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()
致命错误:在 php 中调用未定义函数 fetch_assoc()
PHP 致命错误:调用未定义的函数 imagecreatefrompng()