我们有一个从过去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
答案 0 :(得分:2)
该错误消息表明PHP无法解析内存缓存服务器的主机名以启动会话。
您可以在session.save_path
设置中查看内存缓存服务器的URL。
你能从运行PHP的linux盒子的命令行ping这个memcache服务器主机吗?
主机名可能不正确,或者该实例不再运行。
如果它正在运行且您知道IP,请尝试为/ etc / hosts添加一个条目,然后重新启动Apache。
答案 1 :(得分:0)
您的会话保存路径错误,您将其配置为tcp://URL:
,但这显然应该是真实的网址或IP地址。
如果您没有使用内存缓存,那么我建议您只是注释掉或删除session.save_handler
和session.save_path
设置,以便PHP使用其标准默认值进行会话存储,然后应该正常工作。
答案 2 :(得分:0)
当你得到php_network_getaddresses
时,这意味着PHP无法解析主机名,当你按名称连接到外部(甚至是本地)服务时,它可能被触发。
首先,您的服务器将查看您的/etc/hosts
文件,将主机名转换为IP地址,如果失败则会尝试在DNS上解析(只有名称为"公共"。)
要绕过此问题,请在/etc/hosts
文件中添加一个新条目,如下面的
127.0.0.1 URL
URL
位于session.save_path
,我假设它指向同一台服务器。