PHP警告:session_start():php_network_getaddresses:getaddrinfo失败

时间:2014-07-24 14:43:58

标签: php apache session

我们有一个从过去3-4个月以来从未使用过的Amazon Linux服务器,当我们开始使用它时,用PHP编写的登录模块已经完全破解。当我检查标准的httpd logs / var / log / httpd / error_log时,它说:

  

PHP警告:session_start():php_network_getaddresses:getaddrinfo failed:第1行/home/sites/siteAdmin/authenticate.php中未知的名称或服务

我已经提到了很多关于此问题的问题(关于stackoverflow),文章和博客,但它们都没有为我工作。请帮忙。

Authenticate.php

session_start();
global $dbname,$dbserver,$dbusername,$dbpasswd,$_SERVER;
include_once($_SERVER['DOCUMENT_ROOT']."/includes/_db_config.php");
$db = mysql_connect($dbserver,$dbusername,$dbpasswd);
mysql_select_db($dbname,$db);
$msg = "";
$userName=$_REQUEST["userName"];
$password=$_REQUEST["password"];
$sql_result2 = mysql_query("select * from TBL where user = '$userName' and pass = '$password'", $db);
$rs2 = mysql_fetch_array($sql_result2);
if(count($rs2)>0){
 $adminId=$rs2[0];
 $_SESSION["adminId"] = $adminId;
 $_SESSION["loggedInFlag"] = 1;
 header("Location:main.php");
 exit();
}
else{
 header("Location:URL");
 exit();
}

session。*来自phpinfo()

Directive                          Local Value  Master Value
session.auto_start                 Off          Off
session.bug_compat_42              Off          Off
session.bug_compat_warn            On           On
session.cache_expire               180          180
session.cache_limiter              nocache      nocache
session.cookie_domain              .URL         .URL
session.cookie_httponly            Off          Off
session.cookie_lifetime            0            0
session.cookie_path                /            /
session.cookie_secure              Off          Off
session.entropy_file               no value     no value
session.entropy_length             0            0
session.gc_divisor                 1000         1000
session.gc_maxlifetime             28800        28800
session.gc_probability             1            1
session.hash_bits_per_character    5            5
session.hash_function              0            0
session.name                       PHPSESSID    PHPSESSID
session.referer_check              no value     no value
session.save_handler               Memcache     Memcache
session.save_path                  tcp://URL:11111?persistent=1&weight=1&timeout=1&retry_interval=15
session.serialize_handler          php          php
session.use_cookies                On           On
session.use_only_cookies           On           On
session.use_trans_sid              0            0

3 个答案:

答案 0 :(得分:2)

该错误消息表明PHP无法解析内存缓存服务器的主机名以启动会话。

您可以在session.save_path设置中查看内存缓存服务器的URL。

你能从运行PHP的linux盒子的命令行ping这个memcache服务器主机吗?

主机名可能不正确,或者该实例不再运行。

如果它正在运行且您知道IP,请尝试为/ etc / hosts添加一个条目,然后重新启动Apache。

答案 1 :(得分:0)

您的会话保存路径错误,您将其配置为tcp://URL:,但这显然应该是真实的网址或IP地址。

如果您没有使用内存缓存,那么我建议您只是注释掉或删除session.save_handlersession.save_path设置,以便PHP使用其标准默认值进行会话存储,然后应该正常工作。

答案 2 :(得分:0)

当你得到php_network_getaddresses时,这意味着PHP无法解析主机名,当你按名称连接到外部(甚至是本地)服务时,它可能被触发。

首先,您的服务器将查看您的/etc/hosts文件,将主机名转换为IP地址,如果失败则会尝试在DNS上解析(只有名称为"公共"。)

要绕过此问题,请在/etc/hosts文件中添加一个新条目,如下面的

127.0.0.1    URL

URL位于session.save_path,我假设它指向同一台服务器。