2016-11-20 102 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