php连接solr提示“Solr HTTP Error 7: 'Couldn't connect to server'”

版权声明:可能不高端,但也是心血,原创不易,转载需注明出处 https://blog.csdn.net/Autumn_1/article/details/84109564

此文章只能说是记录我踩到的坑,或者说是前任挖的,也可以说是自己的问题,希望自己以后别再犯!

  前段时间接手一个项目,用到了solr,稍微学习了一下,会简单使用用以后就没有管了,也算是怪自己没有认真去了解学习吧!

最近调整服务器,把服务器拆分成了很多个虚拟机,一个放项目,一个放数据库,一个放solr等,再加上领导比较时髦,喜欢用最先的版本,之前一直用的solr-5.5.0,这次直接用最新的solr7.5...

迁徙项目后,改了新的solr配置,发现连接不上,提示“Solr HTTP Error 7: 'Couldn't connect to server”,开始检查:

1.仔细检查配置的IP,端口,path都没有问题

2.本地和测试环境都装solr7.5测试,同样的方法去测试,可以使用...

3.关掉solr,发现依然是“Solr HTTP Error 7: 'Couldn't connect to server”,那就是说,从头到尾都没有访问过去

4.检查防火墙,关掉防火墙测试,依然是这个提示!

5.再查php扩展,phpinfo(),发现新的php没有安装solr扩展!好吧,装上再试试,依然报错

6.php -m看solr是否有扩展(因为曾经有两个版本php,而web用的和命令行用的php不是同一个,命令行里用的php没有装solr),这次服务器上也有一个php5.6和一个php7,排查这个原因。也不是。。。

7.比较两边扩展是否一样,版本是否一致,也没有问题...

8.再次检查了一次配置,和连接方法,本地和测试环境都使用同样的方法去插入索引,可以!

9.抱着绝望和侥幸的心理去用本地连接测试环境,并添加索引。。。嗯?!!本地solr添加了一条,而测试环境没添加?!!(看到了希望!!)

10.打印

$solrClient = new SolrClient($solr);
print_r($solrClient->ping());exit;

出来看!内容如下:

object(SolrPingResponse)#14 (11) {
  ["http_status":protected] => int(200)
  ["parser_mode":protected] => int(0)
  ["success":protected] => bool(true)
  ["response_writer":protected] => string(3) "xml"
  ["http_status_message":protected] => string(1) " "
  ["http_request_url":protected] => string(80) "http://localhost:8983/solr/ad_info_data/admin/ping/?version=2.2&indent=on&wt=xml"
  ["http_raw_request_headers":protected] => string(211) "HEAD /solr/ad_info_data/admin/ping/?version=2.2&indent=on&wt=xml HTTP/1.1
User-Agent: PHP Solr Client 2.1.0
Host: localhost:8983
Accept: */*
Accept-Charset: utf-8
Keep-Alive: 300
Connection: keep-alive

"
  ["http_raw_request":protected] => string(1) " "
  ["http_raw_response_headers":protected] => string(84) "HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 0

"
  ["http_raw_response":protected] => string(84) "HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 0

"
  ["http_digested_response":protected] => string(1) " "
}

 找到了!居然在连接本地!那就是说,我配置的访问IP根本没有起作用!

11.查看相关文档说明,原来配置IP用的是 hostname,而我一直跟着前任用host!

好吧,原来solr没有传入hostname的时候,默认使用本地solr,而本地和测试环境都有,因此一直可以正常使用,偏偏正式环境分成了很多个虚拟机,solr没有放一起,导致始终链接不上!改回来,测试,成功!

不知道以前的版本是使用host,新版本hostname还是从头到尾都用错了,我更倾向于后者。也不能怪别人,只能怪自己不认真去学习...敲个警钟!

猜你喜欢

转载自blog.csdn.net/Autumn_1/article/details/84109564