Freeswitch ESL PHP не работает с php7.2

Когда я компилирую phpmod с php 5 (или 5.6), все работает нормально. Но когда я устанавливаю php7.2, php ESL больше не работает.

Оказалось, что в ESL.php используется dl () для динамической загрузки расширения во время выполнения. Однако, опция dl () была удалена в более поздних версиях php.

Вот вывод

# ./single_command.php status

PHP Warning: dl(): Dynamically loaded extensions aren't enabled in
/usr/src/freeswitch/libs/esl/php/ESL.php on line 24
Command to run is: status
PHP Fatal error: Uncaught Error: Call to undefined function
new_ESLconnection() in /usr/src/freeswitch/libs/esl/php/ESL.php:157
Stack trace:
#0 /usr/src/freeswitch/libs/esl/php/single_command.php(9):
ESLconnection->__construct('127.0.0.1', '8021', 'ClueCon')
#1 {main}
thrown in /usr/src/freeswitch/libs/esl/php/ESL.php on line 157

Я пытался загрузить расширение ESL.so в php.ini, но это тоже не работает.

Вот вывод:

# php -dextension=/usr/lib/php/20160303/ESL.so

PHP Warning: PHP Startup: ESL: Unable to initialize module
Module compiled with module API=20131226
PHP compiled with module API=20170718
These options need to match
in Unknown on line 0

Любая идея, чтобы заставить ESL PHP работать с php7.2?

Мне нужно использовать php> 7.1.3 (требование веб-фреймворка)

PS: Я открыл билет на JIRA, но ничего еще не получил.

https://freeswitch.org/jira/browse/ESL-132

0

Решение

Вам нужно скомпилировать ESL.so после установив установку разработки PHP 7.2, чтобы избежать ошибки несоответствия компиляции API, и загрузите расширение ESL.so в свой php.ini файл под [PHP] раздел с использованием extension= заявление.

Вот что я имею в качестве примера:

[PHP]
...
extension=/usr/local/src/freeswitch-git/libs/esl/php/ESL.so
...

/usr/local/src/freeswitch-git/ является исходным каталогом FreeSWITCH, и ESL.so был составлен с make phpmod в /usr/local/src/freeswitch-git/libs/esl,

Несколько полезных команд по пути:

# list the compiled extensions/modules (ESL would be listed here on success)
php -m
# detailed PHP configuration
php -i
# get the API option in the compiled ESL module (adapt to your case)
strings /usr/local/src/freeswitch-git/libs/esl/php/ESL.so | grep API

Надеюсь это поможет!

1

Другие решения

Других решений пока нет …