1Panel部署NZ系统 后台站点设置没有保存按钮

今天在1Panel上遇到一个诡异的问题。部署NZ系统,进后台《站点设置》没有保存按钮。其他都显示正常。没有保存按钮,设置没办法提交啊。

开始意为是PHP版本太高导致的,但同样的PHP版本,在宝塔上就正常。

查看网页代码发现,到《作者主页地址是否加密》后面就没了。没输出代码了。看系统代码,就是这句出问题了。

加密后例:<code>{$pp[weburl]}{$pp[link_shop_pre]}{@other::format_id(111, false, 8, $_ENV['_config']['auth_key'])}{$pp[link_shop_end]}</code><br>

搜到format_id 这个函数整段代码扔给ChatGPT。

public static function format_id($in, $to_num = false, $pad_up = false, $passKey = null){
$index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if ($passKey !== null){
for ($n = 0; $n<strlen($index); $n++) {
$i[] = substr( $index,$n ,1);
}
$passhash = hash('sha256',$passKey);
$passhash = (strlen($passhash) < strlen($index))
? hash('sha512',$passKey)
: $passhash;
for ($n=0; $n < strlen($index); $n++) {
$p[] = substr($passhash, $n ,1);
}
array_multisort($p, SORT_DESC, $i);
$index = implode($i);
}
$base = strlen($index);
if ($to_num) {
$in = strrev($in);
$out = 0;
$len = strlen($in) - 1;
for ($t = 0; $t <= $len; $t++) {
$bcpow = bcpow($base, $len - $t);
$out = $out + strpos($index, substr($in, $t, 1)) * $bcpow;
}
if (is_numeric($pad_up)) {
$pad_up--;
if ($pad_up > 0) {
$out -= pow($base, $pad_up);
}
}
$out = sprintf('%F', $out);
$out = substr($out, 0, strpos($out, '.'));
} else {
if (is_numeric($pad_up)) {
$pad_up--;
if ($pad_up > 0) {
$in += pow($base, $pad_up);
}
}
$out = "";
for ($t = floor(log($in, $base)); $t >= 0; $t--) {
$bcp = bcpow($base, $t);
$a = floor($in / $bcp) % $base;
$out = $out . substr($index, $a, 1);
$in = $in - ($a * $bcp);
}
$out = strrev($out);
}
return $out;
}

ChatGPT这才告诉我:

如果你的服务器环境没有安装或启用 BCMath 扩展,函数 bcpow 可能会不可用。这些函数通常用于处理大数的计算。
建议: 确保你的 PHP 环境中启用了 BCMath 扩展。你可以通过在代码中检查函数是否存在来验证这一点:

if (!function_exists('bcpow')) {
    die('BCMath extension is not enabled');
}

果然一测,还真是没有。。。
这个函数一般是用来给用户URL加密的,应用很广泛,不知道为啥默认没有装这个扩展。。据论坛上的朋友反馈,wordpress主题B2也受影响,我也有站在用B2主题。进后台一看果然也有类似的功能,加密用户页面网址。

08cfd091cb05364e79d58fbd5dd19268

建议1P团队把默认扩展自动选上,其他可选扩展让用户自己决定,现在扩展那里是默认扩展和其他扩展是互斥的。从宝塔搬过来的新手很容易踩坑。。。

解决方法:去1P面板》网站>>运行环境 找到对应的PHP版本。编辑。扩展那里输入BCMath 下拉菜单出来选中,然后点击确认。等他重建好之后就可以了。

7e0d181fa1eec2afaf70782753fd1435

THE END