2015-10-20 47 views
6

我想让FOSElasticaBundle正常工作。 ElasticSearch实例正在localhost:9200上运行并进行响应。在填充FOSElasticaBundle/Symfony2时ResponseExeption出错

我跟着文档https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Resources/doc/setup.md

,但在最后一步,我在我的控制台得到这个错误每个步骤:

c:\xampp\htdocs\my\folder>php app/console fos:elastica:populate 
Resetting app 

Fatal error: Wrong parameters for Exception([string $exception [, long $code [, 
Exception $previous = NULL]]]) in C:\xampp\htdocs\my\folder\vendor\rufli 
n\elastica\lib\Elastica\Exception\ResponseException.php on line 34 

[Symfony\Component\Debug\Exception\FatalErrorException] 

Error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]]) 


fos:elastica:populate [--index[="..."]] [--type[="..."]] [--no-reset] [--offset="..."] [--sleep="..."] [--batch-size="..."] [--ignore-errors] [--no-overwrite-format] 

好像有3个参数强制“__construct” - 函数,但只有2个。我只是试图添加“NULL”参数来让它工作,但是然后另一个函数会抛出一个错误。

public function __construct(Request $request, Response $response) 
{ 
    $this->_request = $request; 
    $this->_response = $response; 
    parent::__construct($response->getError()); 
} 

这是常见问题吗?我如何解决它?

+0

http://stackoverflow.com/questions/21684388/wrong-parameters-for-exception-when-creating-exception-subclass(你必须更新你的PHP版本到5.3) –

+1

我的PHP版本是5.6 .3 – RoyRobsen

+0

好的,你说得对,这不是PHP版本的问题。看代码,问题必须是$ response-> getError()不返回一个字符串。我查看了代码,但无法弄清楚为什么会发生这种情况。 –

回答

7

这是因为ruflin /弹性曲线包装不符合elasticsearch 2.0还兼容。

https://github.com/ruflin/Elastica/issues/946

一种替代,现在(直到ruflin /弹性曲线是2.0升级),是使用最新的1.x版本。

您可以在这里下载:https://www.elastic.co/downloads/past-releases/elasticsearch-1-7-3

ES 1.7.3 + FosElasticaBundle(使用ruflin /弹性曲线)正常工作与Elasticsearch 1.7.3版本。

+0

确认已解决的错误以上与此版本:https://www.elastic.co/downloads/past-releases/elasticsearch-1-7-3(感谢Anil !) – Dung

4

这个问题的原因是,使用elasticsearch 2.0响应错误的结构发生了变化(更多细节在这里:https://github.com/ruflin/Elastica/issues/946)。现在它是一个嵌套数组,而不是一个字符串。 Elastica目前还不完全兼容elasticsearch 2.0。只要Elastica的新版本与Elasticsearch 2.0兼容,它就可能意味着foselastica软件包也必须更新,因为这些更改会打破向后兼容性。请注意,这不是唯一向后兼容的重大更改。

跟随升级的进度,遵循此问题:https://github.com/ruflin/Elastica/issues/946

+0

嗨ruflin,简单地“杀死”这个错误消息后,我的应用程序工作得很好。我没有看到我的情况更多的问题。最好的祝福! – RoyRobsen

+0

我也评论了错误构造,并能够成功移动 – vrwired