CentOS安装PHP8扩展
curl扩展无法安装
CURL扩展无法安装是一个特例,它存在的问题不太常见
如果是因为curl依赖没有安装的话,执行以下命令即可
yum install libcurl-devel -y
如果是make过程报以下错误,则看下一步
ext/curl/multi.c:580:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
这是因为你的make脚本不支持当前语法,修改ext/curl/multi.c以下代码即可:
# 将第580行代码 for (zval *pz_ch = (zval *) zend_llist_get_first_ex(&curl_multi->easyh, &pos); pz_ch; # 改为 zval *pz_ch = (zval *) zend_llist_get_first_ex(&curl_multi->easyh, &pos);for (; pz_ch;
mbstring扩展无法安装
如果是make过程报以下错误,则看下一步
ext/mbstring/mbstring.c:1283:4: error: ‘for’ loop initial declarations are only allowed in C99 mode ext/mbstring/mbstring.c:1299:4: error: ‘for’ loop initial declarations are only allowed in C99 mode ext/mbstring/mbstring.c:1367:3: error: ‘for’ loop initial declarations are only allowed in C99 mode ext/mbstring/mbstring.c:2744:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
这是因为你的make脚本不支持当前语法,修改ext/mbstring/mbstring.c以下代码即可:
# 将第1283行代码 for (size_t i = 0; i < n; i++, entry++) { # 改为 size_t i = 0;for (; i < n; i++, entry++) { # 将第1299行代码 for (size_t i = 0; i < n; i++, entry++) { # 改为 i = 0;for (; i < n; i++, entry++) { # 将第1367行代码 for (size_t i = 0; i < n; i++) { # 改为 size_t i = 0;for (; i < n; i++) { # 将第2744行代码 for (const mbfl_encoding **encodings = mbfl_get_supported_encodings(); *encodings; encodings++) { # 改为 const mbfl_encoding **encodings = mbfl_get_supported_encodings();for (; *encodings; encodings++) {
自定义扩展安装问题
- TSRMLS_D、TSRMLS_DC、TSRMLS_C、TSRMLS_CC
# php-7.x/TSRM/TSRM.h # php-8.x/UPGRADING.INTERNALS中提到:TSRMLS_D、TSRMLS_DC、TSRMLS_C、TSRMLS_CC已经被移除了,因此,有些地方的语法要做变动 # 【TSRMLS_D】 等价于 【void ***tsrm_ls】 # 【TSRMLS_C】 等价于 【tsrm_ls】 # 【TSRMLS_DC】 等价于 【, TSRMLS_D】 # 【TSRMLS_CC】 等价于 【, TSRMLS_C】 【TSRMLS_DC】 等价于 【, TSRMLS_D】 → 在PHP8中改为【】(删除即可) 【argc TSRMLS_CC】 等价于 【argc , TSRMLS_C】 → 在PHP8中改为【ZEND_NUM_ARGS()】