外贸网站建设,外贸网站建设公司,跨境电商独立站

PBOOTCMS升级到PHP 8X之后,城市分站404如何解决

时间:2026-10-27   访问量:1093

升级PHP 到8.2 以后,发现城市分站无法打开了。

分别是前台的分站和后台的设置页面都无法打开。

一:前台修复代码在:apps/home/controller中的,ParserController.php,第290行左右。  // 分站公司信息处理 

原来的旧代码是:

if($this->config('city_status') && cookie('city')){
                $data2 = unserialize($this->model->getCityCompany(cookie('city')));
                if($data2 = array_filter($data2)){
                    $data = array_replace($data, $data2);
                }
            }


请修改成:

 if($this->config('city_status') && cookie('city')){
                $company = $this->model->getCityCompany(cookie('city'));
                $data2 = is_string($company) && $company !== ''
                    ? @unserialize($company, array('allowed_classes' => false))
                    : false;
                // 未配置或无效的分站公司信息沿用主站,避免 PHP 8 对非数组抛出 TypeError。
                if(is_array($data2) && ($data2 = array_filter($data2))){
                    $data = array_replace($data, $data2);
                }
            }


对于一些较早的程序,以上的代码可能无效,请使用以下的代码:

 if($this->config('city_status') && cookie('city')){
                $cityinfo = $this->model->getCityInfo(cookie('city'), 'company');
                $company = isset($cityinfo->company) ? $cityinfo->company : '';
                $data2 = is_string($company) && $company !== ''
                    ? @unserialize($company, array('allowed_classes' => false))
                    : false;
                // 未配置或无效的分站公司信息沿用主站,避免 PHP 8 对非数组抛出 TypeError。
                if(is_array($data2) && ($data2 = array_filter($data2))){
                    $data = array_replace($data, $data2);
                }
            }


后台的view视窗中,citysort.html中也需要修改。

找到城市参数的DIV,并修改为:

  <!-- 城市参数 -->
            <div class="layui-tab-item">
                <form action="{url./admin/Config/index}" method="post" class="layui-form">
                    <input type="hidden" name="formcheck" value="{$formcheck}">
                    <div class="ant-alert ant-alert-info">
                        <i class="fa fa-info-circle anticon ant-alert-icon" aria-hidden="true"></i><span class="ant-alert-message">注意:如果你操作了导入初始数据,将会<a>清空现有城市表所有数据</a>并导入初始数据:23个省、5个自治区、4个直辖市、2个特别行政区、694个市级别(包含县级市)!!!</span>
                        <a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger import-defaultdata" style="color:#fff">导入初始数据</a>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">城市分站状态</label>
                        <div class="layui-input-block">
                            <input type="radio" name="city_status" value="1" {if(get_config('city_status')=='1' )} checked="checked" {/if} title="启用" lay-filter="city_status">
                            <input type="radio" name="city_status" value="0" {if(get_config('city_status')=='0' || get_config('city_status')=='' )} checked="checked" {/if} title="禁用" lay-filter="area_path">
                            <span class="layui-icon layui-icon-about tips" data-content="启用后访问指定URL进入指定城市分站。例如/guangdong.html进入广东分站"></span>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分站首页标题</label>
                        <div class="layui-input-block">
                            <input type="text" name="city_index_title" placeholder="请输入城市分站首页标题,不填默认调用全局标题" value="{fun=get_config('city_index_title')}" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分站首页关键字</label>
                        <div class="layui-input-block">
                            <input type="text" name="city_index_keywords" placeholder="请输入城市分站首页关键字,不填默认调用全局关键字" value="{fun=get_config('city_index_keywords')}" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分站首页描述</label>
                        <div class="layui-input-block">
                            <textarea name="city_index_description" placeholder="请输入城市分站首页描述,不填默认调用全局描述" class="layui-textarea">{fun=get_config('city_index_description')}</textarea>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">列表页标题</label>
                        <div class="layui-input-block">
                            <input type="text" name="city_title" placeholder="请输入城市分站列表页标题,不填默认调用全局标题" value="{fun=get_config('city_title')}" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">列表页关键字</label>
                        <div class="layui-input-block">
                            <input type="text" name="city_keywords" placeholder="请输入城市分站列表页关键字,不填默认调用全局关键字" value="{fun=get_config('city_keywords')}" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">列表页描述</label>
                        <div class="layui-input-block">
                            <textarea name="city_description" placeholder="请输入城市分站列表页描述,不填默认调用全局描述" class="layui-textarea">{fun=get_config('city_description')}</textarea>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">sitemap模式</label>
                        <div class="layui-input-block">
                            <input type="radio" name="city_sitemap" value="1" {if(get_config('city_sitemap')==1)} checked="checked" {/if} title="完全合并模式(卡到爆炸)">
                            <input type="radio" name="city_sitemap" value="2" {if(get_config('city_sitemap')==2)} checked="checked" {/if} title="单分站入口模式(推荐)">
                            <input type="radio" name="city_sitemap" value="0" {if(!get_config('city_sitemap'))} checked="checked" {/if} title="独立模式(默认)">
                            <span class="layui-icon layui-icon-about tips" data-content="完全合并模式:将所有分站页面链接都合并到主站sitemap<br>单分站入口模式:仅将分站首页链接合并到主站sitemap<br>独立模式:分站独立sitemap,例如guangdongsheng/sitemap.xml访问指定分站下的sitemap"></span>
                        </div>
                    </div>
                    <div class="layui-form-item">
                    	 <div class="layui-input-block">
                    	    <button class="layui-btn" lay-submit name="submit" value="upgrade">保存</button>
                    	    <button type="reset" class="layui-btn layui-btn-primary">重选</button>
                    	 </div>
                    </div>
                </form>
            </div>


正在加载评论…