Php 如何从框架内部使用PECL扩展

Php 如何从框架内部使用PECL扩展,php,symfony,pear,pecl,Php,Symfony,Pear,Pecl,我正在使用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, TRAD

我正在使用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');
}
返回如下错误

致命错误:调用未定义的函数TopBundle\MyController\trader\u ma()


如何在Symfony2框架的condroller中使用PECL扩展???

这主要是因为扩展没有正确安装。要知道扩展是否正确安装,请同时使用for cli和web(cgi/fpm)


有可能仅在php CLI的php.ini中启用扩展,而不在fpm/cgi(web服务器)中启用扩展。因此,请确保在适当的php.ini文件中启用trader模块。

它似乎在为您的类查找名称空间中的函数。由于它在普通函数中工作,这似乎证实了这一点

未定义的函数TopBundle\MyController\trader\u ma()

尝试告诉它在名称空间根中查找

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

将填充代码张贴在你调用
trader\u-ma
的地方,虽然我更改了文章,但我只是简单地使用了
trader\u-ma
。虽然我尝试了
\trader\u-ma
,但它不起作用。有些类,如\DataTime,正如您所说的那样运行良好。但是,在本例中不是。错误消息如下
试图从全局命名空间调用函数“trader_ma”。
我已经解决了这个问题,非常感谢,Machavity!您的回答对我来说也是一个很好的提示。我比较了cgi和命令行中的两个phpini()。我发现在phpinfo命令行中有一个名为trader的表<代码>交易员
交易员技术分析库支持=>已启用
版本=>0.4.0
TA库版本=>0.4.0(2016年11月18日11:24:08)
但是cgi没有关于phpinfo中交易员的表格。但是,我已经确认我在这两个环境中使用了相同的php.ini
/usr/local/php5/lib/php.ini
。我如何解决这个问题呢?现在,我想我可以总结一下我的问题了,cgi上没有启用PECL扩展。啊,,,,,我已经重新启动了apache,并且发现它可以工作。。非常感谢瓦姆西。