启用会话时,PHP mysql_connect无法解析主机名

疯了吧?示例代码:

<?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);
?>

将抛出未知的MySQL服务器主机’samplehost'(2).如果我们删除session_start()或只是在mysql_connect()之前执行session_destroy(),它可以正常工作.基本上,如果我们打开一个会话,它就像mysql_connect一样不会解析主机名.我们用于服务器的主机名已正确添加到/ etc / hosts中.

它是运行PHP 5.3.2-1ubuntu4.7的生产服务器 – 刚刚开始发生.有人碰到这个吗?

编辑:应该提及,有或没有会话,我们可以指定数据库服务器的IP,它可以正常工作.

最佳答案 如果有人遇到这个问题 – 结果证明我们在Apache中拥有的虚拟主机数量存在问题.当您开始达到文件描述符的限制时出现,您会得到一些奇怪的症状 – 当我们开始在PHP中收到“太多打开文件”错误时,它最终被诊断出来.

这是我们如何为新域自动生成虚拟主机的遗留设置.更好地管理这个过程,减少虚拟主机的数量,问题就消失了.

点赞