PHP无法连接到live web服务器上的MySql数据库
我的PHP网站是实时的,无法连接到数据库。它在我的PC本地服务器上运行良好。当我编写PHP无法连接到live web服务器上的MySql数据库,php,mysql,mysqli,Php,Mysql,Mysqli,我的PHP网站是实时的,无法连接到数据库。它在我的PC本地服务器上运行良好。当我编写localhost:3306时,它会执行我为调试而编写的echo语句。 如果我只写localhost,它会给出: http 500错误 .在不知道实际错误的情况下,不能说太多。但我可以根据你所给出的假设做一些事情 当您将localhost作为主机名传递给mysqli\u connect()函数时,它会尝试使用Unix套接字而不是TCP/IP创建连接。因此,看起来要么您没有访问套接字的权限,要么您需要从托管提供商处
localhost:3306
时,它会执行我为调试而编写的echo
语句。
如果我只写localhost,它会给出:
http 500错误
.在不知道实际错误的情况下,不能说太多。但我可以根据你所给出的假设做一些事情 当您将
localhost
作为主机名传递给mysqli\u connect()
函数时,它会尝试使用Unix套接字而不是TCP/IP创建连接。因此,看起来要么您没有访问套接字的权限,要么您需要从托管提供商处获取正确的套接字信息
另外,当您将其作为localhost:3306传递时,您将强制它通过TCP/IP而不是套接字进行连接。这就是它起作用的原因
但是,您可以通过提供主机名为127.0.0.1
来强制mysqli\u connect()
函数通过TCP/IP进行连接
$con=mysqli_connect('localhost:3306','Punya','password','saain');
如果这不起作用,我假设他们在php配置中为mysql定义了不同的默认端口。您可以通过如下方式打印来查看它:
$con = mysqli_connect('127.0.0.1','Punya','password','saain');
如果此默认端口与3306不同(这不太可能),您可以将端口作为第五个参数传递给mysqli_connect()函数,如下所示
echo ini_get("mysqli.default_port");
您需要联系您的主机提供商以获取更多详细信息。在此之前,您的解决方案是如上所示进行连接
我希望你能理解为什么会这样:)如果你有任何疑问,请随时询问。试着登记
Synax错误
查看您的查看您的live server正在运行的版本以及我们的定位机正在运行的版本。大多数情况下,环境因素会导致这些类型的错误。对于这个答案,我将假设您的托管环境是一个共享托管 你可以先做几件事来确定问题
$con = mysqli_connect('127.0.0.1','Punya','password','saain', 3306);
一旦你有了错误。将其粘贴到此处我们可能会为您提供一个更好的答案,如何修复它,因此您的代码在开发机器上运行良好,但在实时服务器上却失败了?尝试使用
127.0.0.1
而不是localhost
。。http 500错误还表明live server被配置为不允许看到PHP错误。此IP也不工作。请提供帮助。web服务器和MySQL是否在同一个物理服务器上,甚至是同一个VM上?“…通过本地主机作为主机名,使用Unix套接字创建连接…”对于windows也是这样吗?当我们作为“localhost”传递时,它会创建管道吗?@MarlonAbeykoon我不太确定mysqli扩展(在文档中找不到任何相关内容),但在mysql下,提到如果您将主机作为localhost提供,它会在Windows中使用命名管道-
<?php
error_reporting(E_ALL);
ini_set("display_errors", "On");
<?php
phpinfo();
?>