error: 'PHP_FE_END' undeclared here (not in a function) error: 'ZEND_MOD_END' undeclared here (not in a function)
常見於舊版 PHP 擴展源碼在新版 PHP (5.4+) 編譯時,宏定義已變更。
# 進入 PHP 源碼目錄
cd /path/to/php-src
# 批量替換所有擴展 .c 文件
sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/*.c
sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/**/*.c
# 單獨修復某擴展 (如 pcntl)
sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/pcntl/*.c
sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/pcntl/*.c
PHP_FE_END 舊宏用於標記函數表結束,新版改為 {NULL, NULL, NULL} 哨兵結構ZEND_MOD_END 同理,模組結束標記phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
修復後重新編譯即可通過。