如何在PHP中连接到MySQL数据库而不会因cPanel而出错?

xt0899hw  于 2023-06-20  发布在  PHP
关注(0)|答案(1)|浏览(107)

这个基本命令:

new mysqli($servername, $username, $password);
mysqli_connect($servername, $username, $password);

在PHP 8.2+中被阻止使用Uncaught Error: Class "mysqli" not foundUncaught Error: Call to undefined function mysqli_connect()(取决于您使用的是哪一个),似乎是由于PHP 8.2: MySQLi can no longer be compiled with libmysqli(建议使用mysqlnd库而不是libmysql库)。
在cPanel,as explained here(以及过去的版本here)中绕过它的方法是检查通常关闭的nd_mysqli,因为显然有mysqlnd(默认情况下选中)是不够的。
但是,由于我的主机解释 “的原因“nd_mysqli”被禁用是因为该模块是推荐”,是否有另一个PHP命令,建议PHP 8.2+连接到MySQL数据库从PHP不会触发任何错误或需要任何特殊的设置?

s8vozzvw

s8vozzvw1#

推荐的扩展名一直是PDO。但是,如果您的站点已经使用mysqli编写,则即使在PHP 8.2上也可以继续使用它。
CPanel是愚蠢的,他们愚蠢的配置已经迷惑了很多人。他们默认使用libmysql编译PDO和mysqli,并且只提供更好的mysqlnd变体作为前缀为nd_的非标准扩展。用户永远不应该使用libmysql的变体,在PHP 8.2中,甚至不可能在该库中提供mysqli。应始终启用的正确扩展名为:

  • nd_pdo_mysql
  • nd_mysqli

我不知道他们在名称mysqlnd下提供了什么,因为它不是一个可以启用或禁用的扩展。在配置中提供此选项是荒谬的。
我不明白为什么cPanel不推荐nd_* 变体。
参见https://stackoverflow.com/a/73902084/1839439

相关问题