提问人:LWC 提问时间:6/14/2023 最后编辑:DharmanLWC 更新时间:6/16/2023 访问量:704
如何在PHP中连接到MySQL数据库而不会因cPanel而出现错误?
How to connect in PHP to a MySQL database without getting errors due to cPanel?
问:
以下基本命令:
new mysqli($servername, $username, $password);
mysqli_connect($servername, $username, $password);
在 PHP 8.2+ 中被阻止 or (取决于您使用的是哪一个)似乎是由于 PHP 8.2: MySQLi 不能再使用 libmysqli 编译(建议使用库而不是库)。Uncaught Error: Class "mysqli" not found
Uncaught Error: Call to undefined function mysqli_connect()
mysqlnd
libmysql
在cPanel中绕过它的方法是,如此处所述(以及此处的过去版本),是检查通常关闭的,因为显然有(默认情况下检查)是不够的。nd_mysqli
mysqlnd
但是,由于我的主机解释了“禁用”nd_mysqli“的原因是因为不推荐该模块”,那么是否建议PHP 8.2+使用另一个PHP命令从PHP连接到MySQL数据库,该命令不会触发任何错误或需要任何特殊设置?
答:
推荐的扩展始终是 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
评论