PHP无法连接到live web服务器上的MySql数据库

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创建连接。因此,看起来要么您没有访问套接字的权限,要么您需要从托管提供商处

我的PHP网站是实时的,无法连接到数据库。它在我的PC本地服务器上运行良好。当我编写
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正在运行的版本以及我们的定位机正在运行的版本。大多数情况下,环境因素会导致这些类型的错误。对于这个答案,我将假设您的托管环境是一个共享托管

你可以先做几件事来确定问题

  • 启用错误
  • 如果您托管在cPanel共享托管服务器上,我怀疑您是否可以更改php.ini文件。您可以做的是在运行时启用PHP错误,这样您将有一个正确的错误,而不仅仅是500个错误将以下代码放在PHP文件的顶部

    $con = mysqli_connect('127.0.0.1','Punya','password','saain', 3306);
    
    
    
  • Cpanel有自己的MYSQL服务器域和端口。在cPanel中创建数据库时应获得此信息

  • 一旦你有了错误。将其粘贴到此处我们可能会为您提供一个更好的答案,如何修复它

    ,因此您的代码在开发机器上运行良好,但在实时服务器上却失败了?尝试使用
    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();
    ?>