2016-11-20 74 views
1

里面我使用的PECL扩展trader如何使用PECL扩展,从框架

它的工作原理./src/MyBundle/Command/MyCommand.php内没有任何制作安装或包含。

function calcByCode() 
    \trader_ma($array, 5, TRADER_MA_TYPE_EMA); 
} 
然而

控制器内部

./src/MyBundle/Controller/MyController.php

public function indexAction() 
{ 
    \trader_ma($array, 5, TRADER_MA_TYPE_EMA); 
    //(or trader_ma($array, 5, TRADER_MA_TYPE_EMA);) 

    return $this->render('AcmeTopBundle:Default:index.html.twig'); 
} 

返回错误这样

Fatal error: Call to undefined function TopBundle\MyController\trader_ma()

如何使用PECL扩展Symfony2框架的condroller里面?

+0

后看,你叫'trader_ma' – Machavity

+0

我虽然改变了文章的补码,我只是用'trader_ma'很简单。 – whitebear

回答

1

这主要是扩展未正确安装的情况。要知道扩展名是否正确安装,请对cli和web(cgi/fpm)使用phpinfo

扩展只有在php.ini中用于PHP CLI而不是用于fpm/cgi(web服务器)才有可能。所以请确保您在相应的php.ini文件中启用交易模块。

+0

我比较了CGI和命令行中的两个phpini()。 我发现在phpinfo命令行中有名为交易者的表。 'trader' '操盘技术分析库支持=> enabled' '版本=> 0.4.0' 'TA-Lib的版本=> 0.4.0(2016年11月18日11时24分08秒)' 然而,从CGI的phpinfo没有关于交易者的表格。 但是我已经确认我在两种环境下都使用相同的php.ini'/ usr/local/php5/lib/php.ini'。 我该如何解决这个问题? – whitebear

+0

所以现在,我想我可以总结一下我的问题,**在cgi **上不启用PECL扩展。 – whitebear

+0

AH ,,,,,,我重新启动了Apache,发现它的工作..非常感谢你Vamsi。 – whitebear

1

它似乎是在你的类的命名空间内寻找函数。由于它在香草功能中起作用,这似乎证实了这一点。

undefined function TopBundle\MyController\trader_ma()

试着告诉它命名空间中的根

public function indexAction() 
{ 
    \trader_ma($array, 5, TRADER_MA_TYPE_EMA); 
    return $this->render('AcmeTopBundle:Default:index.html.twig'); 
} 
+0

虽然我试过'\ trader_ma',但它不起作用。像\ DataTime这样的一些类可以像您所说的那样工作。但在这种情况下,不是。 – whitebear

+0

错误消息是这样的'尝试从全局命名空间调用函数“trader_ma”.' – whitebear

+0

我已经解决了这个问题,非常感谢你@Machavity!你的回答对我来说也是很好的暗示。 – whitebear