博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php nslookup,linux下ping、nslookup均正常但是在php环境下gethostname却无法解析出ip
阅读量:4318 次
发布时间:2019-06-06

本文共 1510 字,大约阅读时间需要 5 分钟。

1月30日晚,收到了glibc漏洞的通知,马上进行服务器更新,手上有五台linux服务器,很顺利每个没用2分钟就更新完了,收拾电脑,上传睡觉!

第二天是周六,一早还没睡醒就接到了电话,discuz论坛竟然无法登录。。。。。。马上开电脑进行检查,原来是dns的问题,检查了/etc/resolv.conf文件,nameserver配置没有问题,

检查了netstat -rn,也未发现异常。

检查:/etc/nsswitch.conf

其中host 配置的是host dns

这个也没有问题,ping ip可以通,nslookup 域名也不行。一律都报unknown host,连localhost也是这样报,抓狂呀!

查看网卡未发现异常,使用service network restart 终于发现了些问题,有个启动时报了类似file exist的错误,发现可能是nscd(网上有说是networkmanage服务)服务的问题,关闭服务,重启linux服务器,操作系统内终于可以正常的ping、nslookup了。本以为问题到此已经解决完毕,这时朋友告知论坛的微博登录等功能还是不好用,我测试发现确实不好用,查看论坛后台, 发现php中竟然还是无法获取域名的ip。。。。

于是自己写了一个简单的php文件进行测试,testdns.php,内容如下:

echo(gethostbyname('www.hongxuejing.com'));

?>

使用浏览器访问,竟然直接输出的是www.hongxuejing.com

修改文件为如下内容:

echo(gethostbyname('www.hongxuejing.com'));

echo(gethostbyname2('www.hongxuejing.com'));

function gethostbyname2($host, $timeout = 3) {

$query = `nslookup -timeout=$timeout -retry=1 $host`;

//$query=`ping www.baidu.com -c 3`;

// return $query;

if(preg_match('/

Address: (.*)

/', $query, $matches))

return trim($matches[1]);

return $query;

}

?>

在linux shell环境下执行测试一下:

/usr/loca/php/bin/php   testdns.php

竟然两种方式均可以正常解析出域名,网上各种搜索倒是有几个这种情况的,都没有找到解决办法,或者更换了系统或者就无后续说明了。自己一步一步慢慢折腾,网上有提到可能是lib的问题,无奈我这个linux下根本没有类似libnss***的so,看来不是lib的问题了。不过有一点可以确定既然shell下可以,php服务下不可以(使用的php-fpm,由nobody用户执行),那十有八九也是权限问题,肯定是nobody执行的php-fpm无法执行nslookup方法用到的lib,顺着这个思路,给有相关lib的地方增加任意用户的读取权限,高兴的事终于发生,php终于恢复正常,可以正常解析域名了!

不过排查是哪个比较麻烦,这个有耐心的就逐个目录尝试吧,没耐心的就直接所有目录(chmod -R a+r /*)增加可读权限吧(之后需要再执行chmod a-r /etc/ssh/ssh_host_rsa_key,否则会造成ssh的服务无法启动,无法正常连接服务器),非常不推荐所有目录加可读。

转载地址:http://mwgzs.baihongyu.com/

你可能感兴趣的文章
unix/linux下的共享内存、信号量、队列信息管理
查看>>
Hilbert先生旅馆的故事
查看>>
[家里蹲大学数学杂志]第394期分组求积分因子法
查看>>
[唐诗]送杜少府之任蜀州-王勃
查看>>
华中科技大学数学专业考研试题参考解答
查看>>
Objective-C数组初识
查看>>
appium(10)-iOS predictate
查看>>
程序的优化(PHP)
查看>>
Function.prototype.toString 的使用技巧
查看>>
Zookeeper+websocket实现对分布式服务器的实时监控(附源码下载)
查看>>
Oracle to_char 转换数值
查看>>
selinux-网络服务安全
查看>>
urllib
查看>>
NIOS II 中用结构体指示灯终于正常了
查看>>
CF1009F Dominant Indices - 题解
查看>>
memached实现tomcat的session共享
查看>>
django导出excel
查看>>
【搜索】数的划分
查看>>
智能提示
查看>>
[JavaScript] 弹出编辑框
查看>>