【问题标题】:Cannot connect to MySQL through PHP无法通过 PHP 连接到 MySQL
【发布时间】:2010-12-24 16:11:19
【问题描述】:

似乎是一个初学者的问题,但我似乎无法弄清楚......

我有一个全新的 Windows 7 x64 / Apache 2.2 / PHP 5.2 / MySQL 5 x64 安装。
实际上我尝试了 IIS 和 Apache。

但是这个 PHP 代码不起作用:

<?
$hostname = "localhost";
$username = "xxx";
$password = "xxx";

$db = mysql_connect($hostname,$username,$password) or die("die");
?>
  • 我可以使用直接命令行将 OK 连接到 MySQL 数据库,当然使用相同的登录名/密码。
  • 我可以使用相同的登录名/密码通过网络访问 MySQL 数据库。
  • PHP 可以正常工作(echo("hello world") 可以正常工作)。
  • 在 php.ini 中启用了 MySQL 扩展。事实上,如果我禁用它,我会得到Call to undefined function mysql_connect()
  • Windows 防火墙已禁用。
  • 没有错误信息。它只是不返回任何东西。 600 秒后超时:

        Fatal error: Maximum execution time of 60 seconds exceeded in
            C:\Ampache\try.php on line 6
    

有什么线索吗?

【问题讨论】:

  • 我认为您没有传入数据库名称的最后一个参数。
  • 你能在最后加一个error mysql_error()吗?
  • @Jacob :数据库名称是可选的。 @Pekka:我确实做到了。但它永远不会在 mysql_connect() 之后通过。
  • 你试过这个吗:error_reporting( E_ALL );
  • @Jacob:mysql_connect 的第四个参数是新链接的布尔值,而不是数据库名称。

标签: php mysql apache iis windows-7


【解决方案1】:

等等等等等等……我想我找到了……

他们说 RTM :-) 都在http://php.net/manual/fr/function.mysql-connect.php :

布鲁斯·柯克帕特里克 - 2009 年 10 月 28 日 05:48 :
在 Windows Vista 或更高版本上,Windows/System32/drivers/etc/hosts 文件中的条目会导致 mysql_connect() 与“localhost”的连接超时并且永远不会连接。这发生在 php 5.3 及更高版本上,因为它现在使用 mysql 本机驱动程序,与以前版本中的 libmysql.dll 相比,它改变了连接行为。这不是 PHP 错误,但对于新 Windows 系统上的用户来说绝对是配置问题。

要解决此问题,您必须删除以下条目:
::1 本地主机

并确保您仍然拥有:
127.0.0.1 本地主机

另外,您可以更改代码以连接到 ip,但如果您有很多网站,这很不方便。

此问题出现在 Windows Vista、Windows 7 和 Windows Server 2008 上。

事实上它适用于

$host = "127.0.0.1";

感谢您的关注!

【讨论】:

  • 我在Win7上也遇到过这个问题。当我测试 5.3 测试版(当时没有文档)时,我花了几个小时为自己弄清楚这一点。 - M$s 最新系统中的一个回归“错误”,它破坏了为最流行的 ISS/.Net 替代方案编写的大多数代码……令人震惊,对吗? xD
  • 事实上,看到设置:::::1 localhost 在我看来是正确的,我并不感到震惊......但我很震惊: - 在 2009 年底,PHP/MySQL 确实如此尚未处理 IPV6 - PHP/MySQL 只是冻结而不是更好地处理连接问题,并带有严重的错误消息......你怎么看?
  • 6 个月后刚刚经历了同样的事情。希望它早在解决问题的几个小时前就出现在谷歌中!
  • 最近两次遇到同样的问题(我重新安装到 SSD,但不记得我之前做了什么) - 就是这样。谢谢!
  • 很高兴它可以对其他人有用:-) ...仍然觉得 PHP/MySQL 应该更好地处理 IPV6 ...
【解决方案2】:

如果你想让 localhost 工作,你可以在 C:\Windows\System32\drivers\etc. 中编辑你的主机文件,或者使用另一个 dns

【讨论】:

    【解决方案3】:

    在 win7/vista 中很简单,有一个 localhost 错误。如果您使用您的计算机名而不是“localhost”,它应该可以工作。

    快乐的 php'ing

    【讨论】:

      猜你喜欢
      • 2018-12-30
      • 2020-03-28
      • 2012-12-29
      • 1970-01-01
      • 2011-06-17
      • 2014-10-18
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多