2016-11-20 5 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?

+0

сообщение код заполнения, где вы называете 'trader_ma' – Machavity

+0

Я изменил статью, хотя, я просто использовать' trader_ma' довольно просто. – whitebear

ответ

1

Это, в основном, корпус, который не установлен правильно. Чтобы узнать, правильно ли установлено расширение, если вы используете phpinfo для cli и web (cgi/fpm).

Существует вероятность того, что расширение включено только в php.ini для PHP CLI, а не для fpm/cgi (веб-сервер). Поэтому убедитесь, что вы активируете модуль трейдера в соответствующем файле php.ini.

+0

Я сравнил два phpini() из cgi и командной строки. Я узнал, что в командной строке phpinfo есть таблица, называемая трейдером. 'trader' ' Трейдер Технический анализ Поддержка библиотеки => enabled' 'Version => 0.4.0' ' TA-Lib версия => 0.4.0 (18 ноября 2016 11:24:08) ' Тем не менее, нет таблицы о трейдере в phpinfo от cgi. Однако я подтвердил, что использую тот же php.ini '/ usr/local/php5/lib/php.ini' в обоих средах. Как это исправить? – whitebear

+0

Итак, теперь я могу подвести итог своей проблеме, ** Расширение PECL не включено в cgi **. – whitebear

+0

AH ,,,,,, Я перезапустил apache и узнал, что он работает .. Большое спасибо вамзи. – 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