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

How to use PECL extension from inside of framework

我正在使用 PECL 扩展 trader

它在 ./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');
}

returns 像这样的错误

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

如何在 Symfony2 框架的控制器中使用 PECL 扩展?

主要是扩展没有安装正确。要知道扩展是否安装正确,请对 cli 和 web ( cgi / fpm ) 使用 phpinfo

扩展有可能只在 php.ini 中为 PHP CLI 而不是为 fpm/cgi(网络服务器)启用。因此,请确保在适当的 php.ini 文件中启用交易模块。

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

undefined function TopBundle\MyController\trader_ma()

尝试告诉它在命名空间 root 中查找

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