最近,我想要更新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完成更新。