更新VPS中的PHP版本

最近,我想要更新VPS中的PHP版本(只是小版本更新,大版本仍然在8.3)。尝试直接在宝塔面板中更新,会更新失败,出现大量如下错误:

/www/server/php/83/src/ext/openssl/xp_ssl.c:502:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[0],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:503:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[1],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:504:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[2],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:505:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[3]
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:138:10: error: subscripted value is neither array nor pointer nor vector
_bytes[0] << 8 | _bytes[1], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:138:27: error: subscripted value is neither array nor pointer nor vector
_bytes[0] << 8 | _bytes[1], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:139:10: error: subscripted value is neither array nor pointer nor vector
_bytes[2] << 8 | _bytes[3], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:139:27: error: subscripted value is neither array nor pointer nor vector
_bytes[2] << 8 | _bytes[3], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:140:10: error: subscripted value is neither array nor pointer nor vector
_bytes[4] << 8 | _bytes[5], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:140:27: error: subscripted value is neither array nor pointer nor vector
_bytes[4] << 8 | _bytes[5], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:141:10: error: subscripted value is neither array nor pointer nor vector
_bytes[6] << 8 | _bytes[7], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:141:27: error: subscripted value is neither array nor pointer nor vector
_bytes[6] << 8 | _bytes[7], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:142:10: error: subscripted value is neither array nor pointer nor vector
_bytes[8] << 8 | _bytes[9], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:142:27: error: subscripted value is neither array nor pointer nor vector
_bytes[8] << 8 | _bytes[9], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:143:10: error: subscripted value is neither array nor pointer nor vector
_bytes[10] << 8 | _bytes[11], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:143:28: error: subscripted value is neither array nor pointer nor vector
_bytes[10] << 8 | _bytes[11], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:144:10: error: subscripted value is neither array nor pointer nor vector
_bytes[12] << 8 | _bytes[13], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:144:28: error: subscripted value is neither array nor pointer nor vector
_bytes[12] << 8 | _bytes[13], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:145:10: error: subscripted value is neither array nor pointer nor vector
_bytes[14] << 8 | _bytes[15] \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:145:28: error: subscripted value is neither array nor pointer nor vector
_bytes[14] << 8 | _bytes[15] \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
make: *** [ext/openssl/xp_ssl.lo] Error 1
Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?
/bin/sh /www/server/php/83/src/libtool --silent --preserve-dup-deps --tag=CC --mode=compile cc -std=gnu11 -Iext/openssl/ -I/www/server/php/83/src/ext/openssl/ -I/www/server/php/83/src/include -I/www/server/php/83/src/main -I/www/server/php/83/src -I/www/server/php/83/src/ext/date/lib -I/usr/include/libxml2 -I/usr/include/libpng15 -I/usr/include/freetype2 -I/www/server/php/83/src/ext/mbstring/libmbfl -I/www/server/php/83/src/ext/mbstring/libmbfl/mbfl -I/www/server/php/83/src/TSRM -I/www/server/php/83/src/Zend -D_GNU_SOURCE -fno-common -Wstrict-prototypes -Wlogical-op -Wno-clobbered -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -g -O2 -ffp-contract=off -fvisibility=hidden -DZEND_SIGNALS -c /www/server/php/83/src/ext/openssl/xp_ssl.c -o ext/openssl/xp_ssl.lo -MMD -MF ext/openssl/xp_ssl.dep -MT ext/openssl/xp_ssl.lo
/www/server/php/83/src/ext/openssl/xp_ssl.c: In function ‘php_openssl_matches_san_list’:
/www/server/php/83/src/ext/openssl/xp_ssl.c:502:6: warning: implicit declaration of function ‘ASN1_STRING_get0_data’ [-Wimplicit-function-declaration]
ASN1_STRING_get0_data(san->d.iPAddress)[0],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:502:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[0],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:503:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[1],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:504:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[2],
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:505:45: error: subscripted value is neither array nor pointer nor vector
ASN1_STRING_get0_data(san->d.iPAddress)[3]
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:138:10: error: subscripted value is neither array nor pointer nor vector
_bytes[0] << 8 | _bytes[1], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:138:27: error: subscripted value is neither array nor pointer nor vector
_bytes[0] << 8 | _bytes[1], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:139:10: error: subscripted value is neither array nor pointer nor vector
_bytes[2] << 8 | _bytes[3], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:139:27: error: subscripted value is neither array nor pointer nor vector
_bytes[2] << 8 | _bytes[3], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:140:10: error: subscripted value is neither array nor pointer nor vector
_bytes[4] << 8 | _bytes[5], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:140:27: error: subscripted value is neither array nor pointer nor vector
_bytes[4] << 8 | _bytes[5], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:141:10: error: subscripted value is neither array nor pointer nor vector
_bytes[6] << 8 | _bytes[7], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:141:27: error: subscripted value is neither array nor pointer nor vector
_bytes[6] << 8 | _bytes[7], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:142:10: error: subscripted value is neither array nor pointer nor vector
_bytes[8] << 8 | _bytes[9], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:142:27: error: subscripted value is neither array nor pointer nor vector
_bytes[8] << 8 | _bytes[9], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:143:10: error: subscripted value is neither array nor pointer nor vector
_bytes[10] << 8 | _bytes[11], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:143:28: error: subscripted value is neither array nor pointer nor vector
_bytes[10] << 8 | _bytes[11], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:144:10: error: subscripted value is neither array nor pointer nor vector
_bytes[12] << 8 | _bytes[13], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:144:28: error: subscripted value is neither array nor pointer nor vector
_bytes[12] << 8 | _bytes[13], \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:145:10: error: subscripted value is neither array nor pointer nor vector
_bytes[14] << 8 | _bytes[15] \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:145:28: error: subscripted value is neither array nor pointer nor vector
_bytes[14] << 8 | _bytes[15] \
^
/www/server/php/83/src/ext/openssl/xp_ssl.c:516:5: note: in expansion of macro ‘EXPAND_IPV6_ADDRESS’
EXPAND_IPV6_ADDRESS(ipbuffer, ASN1_STRING_get0_data(san->d.iPAddress));
^
make: *** [ext/openssl/xp_ssl.lo] Error 1

经过排查,是OpenSSL不兼容的原因,默认的OpenSSL库是1.0.2版本,而编译需要1.1.1版本。即便我已经安装了1.1.1,但还是有问题。最后发现似乎跟环境变量有关。中间经过各种折腾,踩过不少坑,这里就不赘述了。

修改 /www/server/panel/install/php.sh 脚本,在Install_Configure函数的开头添加如下环境变量设置:

export PKG_CONFIG_PATH=/usr/lib64/openssl11/pkgconfig
export CFLAGS="-I/usr/include/openssl11"
export LDFLAGS="-L/usr/lib64/openssl11"
export CPPFLAGS="-I/usr/include/openssl11"

运行 bash php.sh update 8.3 ,此时可以正常完成更新。

需要注意的是,编辑完php.sh之后不要在宝塔里面更新,因为宝塔会先从云端下载php.sh覆盖掉现在的,只能手动运行php.sh完成更新。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注