2016-08-25 2 views
3

Я пытаюсь установить ncurses расширения для php7.0, но я получаю эту ошибкуустановить Ncurses расширения на php7.0

/bin/bash /tmp/pear/download/ncurses-1.0.2/libtool --mode=compile cc -I. -I/tmp/pear/download/ncurses-1.0.2 -DPHP_ATOM_INC -I/tmp/pear/download/ncurses-1.0.2/include -I/tmp/pear/download/ncurses-1.0.2/main -I/tmp/pear/download/ncurses-1.0.2 -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/download/ncurses-1.0.2/ncurses.c -o ncurses.lo 
libtool: compile: cc -I. -I/tmp/pear/download/ncurses-1.0.2 -DPHP_ATOM_INC -I/tmp/pear/download/ncurses-1.0.2/include -I/tmp/pear/download/ncurses-1.0.2/main -I/tmp/pear/download/ncurses-1.0.2 -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/download/ncurses-1.0.2/ncurses.c -fPIC -DPIC -o .libs/ncurses.o 
/tmp/pear/download/ncurses-1.0.2/ncurses.c:36:37: error: unknown type name ‘zend_rsrc_list_entry’ 
static void ncurses_destruct_window(zend_rsrc_list_entry *rsrc TSRMLS_DC) 
            ^
/tmp/pear/download/ncurses-1.0.2/ncurses.c:45:36: error: unknown type name ‘zend_rsrc_list_entry’ 
static void ncurses_destruct_panel(zend_rsrc_list_entry *rsrc TSRMLS_DC) 
            ^
/tmp/pear/download/ncurses-1.0.2/ncurses.c: In function ‘zm_startup_ncurses’: 
/tmp/pear/download/ncurses-1.0.2/ncurses.c:247:57: error: ‘ncurses_destruct_window’ undeclared (first use in this function) 
    le_ncurses_windows = zend_register_list_destructors_ex(ncurses_destruct_window, NULL, "ncurses_window", module_number); 
                 ^
/tmp/pear/download/ncurses-1.0.2/ncurses.c:247:57: note: each undeclared identifier is reported only once for each function it appears in 
/tmp/pear/download/ncurses-1.0.2/ncurses.c:249:56: error: ‘ncurses_destruct_panel’ undeclared (first use in this function) 
    le_ncurses_panels = zend_register_list_destructors_ex(ncurses_destruct_panel, NULL, "ncurses_panel", module_number); 
                 ^
Makefile:194: ошибка выполнения рецепта для цели «ncurses.lo» 
make: *** [ncurses.lo] Ошибка 1 

ошибка выполнения рецепта для цели «ncurses.lo» походит error in process run target

+2

'https: //bugs.php.net/patch-display.php? Bug_id = 71299 & patch = ncurses-php7-support.patch & revision = latest' существует патч для поддержки ncurses, @PaulCrovella – Naumov

+0

Эта ссылка больше не существует. было ли когда-нибудь это исправление? – duck

+0

@duck см. Ссылку https://bugs.php.net/patch-display.php?bug_id=71299&patch=nc%E2%80%8C%E2%80%8Burses-php7-support.p%E2%80% 8C% E2% 80% 8Batch для последней версии php не существует патч – Naumov

ответ

0

Существует патч, который может быть применен к v1. 0.2 из ncurses для php, чтобы изменить его для php 7. Как только патч был применен, расширение можно построить и установить.

Требуемые пакеты (эти имена пакетов Debian): php-cli php-pear php-dev libncurses5-dev ncurses-doc libncursesw5-dev

Все следующие команды предполагают, что пользователь вошел в систему с правами администратора. Команды упаковки специфичны для Debian. Они были протестированы в Debian Stretch.

apt-get install php-cli php-pear php-dev libncurses5-dev ncurses-doc libncursesw5-dev 

Использование pecl получить v1.0.2 из Ncurses, и wget получить патч (как ncurses.patch).

cd /root 
pecl download ncurses 
mkdir /root/ncurses 
cd /root/ncurses 
tar -xvzf /root/ncurses-1.0.2.tgz 
wget "https://bugs.php.net/patch-display.php?bug_id=71299&patch=ncurses-php7-support-again.patch&revision=1474549490&download=1" -O ncurses.patch 

Переименовать ncurses-1.0.2 каталог в ncurses-php5, потому что это имя, которое ожидает патч, и применить патч.

mv ncurses-1.0.2 ncurses-php5 
patch --strip=0 --verbose --ignore-whitespace <ncurses.patch 

Построить расширение ncurses. Это создаст файл ncurses.so в /root/ncurses/ncurses-php5/modules.

cd ncurses-php5 
phpize 
./configure 
make 

Установить расширение ncurses. Это поместит файл ncurses.so в /usr/lib/php/20151012. Это расположение может отличаться в других дистрибутивах.

make install 

Сделать ncurses.so расширение доступной для PHP 7. Эти местоположения файлов могут отличаться в других дистрибутивах.

cat <<'EndOfHereDoc' >/etc/php/7.0/mods-available/ncurses.ini 
; configuration for php ncurses module 
; priority=20 
extension=ncurses.so 
EndOfHereDoc 
ln --symbolic /etc/php/7.0/mods-available/ncurses.ini /etc/php/7.0/cli/conf.d/20-ncurses.ini 

Проверьте, действительно ли доступны ncurses.

php -m | grep ncurses 

После того, как все работает, /root/ncurses каталог, /root/ncurses-1.0.2.tgz файл и /root/channels.xml файл может быть удален.

+0

спасибо, но мне нужно попробовать, после получения вашего сообщения. – Naumov