无法通过PHP连接到MySQL

时间:2009-12-09 01:38:04

标签: php mysql apache iis windows-7

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

我有一个全新的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
    

有任何线索吗?

3 个答案:

答案 0 :(得分:10)

<等等等待......我想我找到了......

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

  

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

     

要解决此问题,您必须删除此条目:
  :: 1 localhost

     

并确保您仍然拥有:
  127.0.0.1 localhost

     

此外,您可以更改代码以连接到IP,但如果您有许多网站,则不方便。

     

Windows Vista,Windows 7和Windows Server 2008上会出现此问题。

实际上它适用于

$host = "127.0.0.1";

感谢您的关注!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在win7 / vista中很简单,就是localhost bug。如果您使用computername而不是“localhost”,它应该可以工作。

快乐的php'ing