2016-08-25 31 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得到的ncurses的v1.0.2版,以及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擴展。這將在/root/ncurses/ncurses-php5/modules中構建ncurses.so文件。

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

謝謝,但我需要嘗試,在你的消息recive後。 – Naumov