【发布时间】:2011-07-06 21:28:36
【问题描述】:
疯了吧?示例代码:
<?php
session_start();
$hostname="samplehost";
$username="sampleuser";
$password="samplepass";
$dbname="sampledb";
$link = mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db($dbname, $link);
?>
将抛出Unknown MySQL server host 'samplehost' (2)。如果我们删除session_start() 或在mysql_connect() 之前执行session_destroy(),它可以正常工作。基本上,如果我们有一个会话打开,它就像 mysql_connect 不会解析主机名。我们用于服务器的主机名已正确添加到 /etc/hosts。
这是一个运行 PHP 5.3.2-1ubuntu4.7 的生产服务器 - 今天才刚刚开始。有人遇到这个吗?
edit:应该提到,无论有没有会话,我们都可以指定数据库服务器的IP,它可以正常工作。
【问题讨论】:
-
这是您用来测试它的完整脚本(当然是负值)吗?
-
所有 DNS/主机操作都会受到影响吗? gethostbyname() 呢?
-
除了 /etc/hosts 中的条目之外,您是否尝试过解析其他主机?
-
@Richard - 这是我已经逐字测试过的脚本 - 用于限制所有其他来源。 @Capsule - 奇怪的是,我们已经尝试过了,并不是所有的 DNS 都受到影响,我们可以使用
gethostbyname()确实返回正确的 IP。 @Payson - 是的,不管我们为主机添加什么,它都无法解决。 -
看来你不是第一个遇到这个问题的人。我没有看到任何说它已修复:bugs.php.net/bug.php?id=51147