[英]PHP mysql_connect cannot resolve Host name when sessions are enabled
疯狂吧? 样例代码:
<?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()
,它就可以正常工作。 基本上,如果我们打开了一个会话,则它像mysql_connect一样不会解析主机名。 我们用于服务器的主机名已正确添加到/ etc / hosts中。
它是运行PHP 5.3.2-1ubuntu4.7的生产服务器-今天才开始发生。 有人碰到这个吗?
编辑:应该提及,无论有无会话,我们都可以指定数据库服务器的IP,并且它可以正常工作。
如果有人遇到这个问题-事实证明这是我们在Apache中拥有的虚拟主机数量的问题。 当您开始达到文件描述符的限制时,您会出现一些奇怪的症状-当我们开始在PHP中收到“打开的文件太多”错误时,它终于被诊断出来。
这是我们自动为新域生成虚拟主机的传统设置。 更好地管理该过程,减少虚拟主机数量,问题就消失了。
您为什么不先连接然后开始会话?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.