首页 » 工作 » 正文

一段检测apache的VirtualHost中域名是否正常解析的PHP脚本

发布者:站点默认
2012/02/26 浏览数(1,952) 分类:工作 一段检测apache的VirtualHost中域名是否正常解析的PHP脚本已关闭评论

说明:

Apache虚拟主机配置文件“httpd-vhost.conf”中有很多VirtualHost块,有些VirtualHost的域名可能已经解析到其它地方,这时需要删除相就在的VirtualHost。

以下代码用于检测ServerName所指域名解析是否还是本服务器(不检测ServerAlias,如需要检测请自行修改代码)。

效果:

Apache中检测无效虚拟主机的结果

Apache中检测无效虚拟主机的结果

代码:

<?php header('Content-Type:text/html; charset=UTF-8');?>
<style>
span {
	font-size:12px;
}
span.alert {
	color:#C00;
}
span.unknown {
	color:#F90;
}
span.normal {
	color:#390;
}
</style>
<?php
	$svrIp = '180.210.206.94'; // 服务器IP
	$file = '/Apache2.2/conf/extra/httpd-vhosts.conf'; // 虚拟主机配置文件
	$content = file_get_contents($file);
	if (preg_match_all('/(ServerName)\s+((.+\.)?(\w+\.?\w+))/', $content, $r)) {
	foreach ($r[2] as $dn){
			$ip = gethostbynamel($dn); // 获取域名所解析的IP
			if (FALSE == $ip){
				echo '<span class="unknown">啊喔:'.$dn.' 谁也没好,貌似单身。(解析错误)</span><br />';
			}elseif($ip[0] != $svrIp){
				echo '<span class="alert">抱歉:'.$dn.' 跟 '.$ip[0].' 好上了</span><br />';
			}else{
				echo '<span class="normal">恭喜:'.$dn.' 的心还在你('.$ip[0].')这里。</span><br />';
			}
		}
	}
	echo 'Done! '.time();
?>

下载:

checkInvalidDomainName.tar.gz

<完。感谢ramble提供帮助,^_^>

点击返回顶部
  1. 留言
  2. 联系方式