phpcms-v9.6.0网站迁移后,后台站点首页链接不能更新

phpcms-v9.6.0后台站点首页链接不能更新
我提到的后台站点首页链接不能更新就是上图画线圈部分。
提示:着急寻求解决方法的请移步到文章尾

描述:按照phpcmsv9手册里的方法迁移网站并更新后,发现站点首页链接依旧无法更新
错误思路1:到admin模块下的后台模板查看站点首页的id site_homepage
站点首页的id site_homepage
发现它输出的是个数组的元素,向上查找,发现$currentsite数组是直接在模板调用,于是在控制器中查找,发现是在init()方法中产生的数组$currentsite

    public function init () {
        $userid = $_SESSION['userid'];
        $admin_username = param::get_cookie('admin_username');
        $roles = getcache('role','commons');
        $rolename = $roles[$_SESSION['roleid']];
        $site = pc_base::load_app_class('sites');
        $sitelist = $site->get_list($_SESSION['roleid']);
        $currentsite = $this->get_siteinfo(param::get_cookie('siteid'));
        /*管理员收藏栏*/
        $adminpanel = $this->panel_db->select(array('userid'=>$userid), "*",20 , 'datetime');
        $site_model = param::get_cookie('site_model');
        include $this->admin_tpl('index');
    }

打印$currentsite

Array
(
    [siteid] => 1
    [name] => 默认站点
    [dirname] => 
    [domain] => http://192.168.1.55/demo1/
    [site_title] => PHPCMS演示站
    [keywords] => PHPCMS演示站
    [description] => PHPCMS演示站
    [release_point] => 
    [default_style] => default
    [template] => default
    [setting] => {"upload_maxsize":"2048","upload_allowext":"jpg|jpeg|gif|bmp|png|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|rar|zip|swf","watermark_enable":"0","watermark_minwidth":"300","watermark_minheight":"300","watermark_img":"statics\/images\/water\/\/mark.png","watermark_pct":"85","watermark_quality":"80","watermark_pos":"9"}
    [uuid] => ccbd774d-92c9-11e6-bb0e-708bcdbe1ddb
    [url] => http://192.168.1.55/demo1/
)

结果发现数组元素$currentsite['domain']与实际地址不符。
再查找数组来源$currentsite = $this->get_siteinfo(param::get_cookie('siteid'))

方法:$this->get_siteinfo()方法来源于index.php控制器的父类admin.class.php 这里贴出父类里的代码

    /**
     * 获取当前站点信息
     * @param integer $siteid 站点ID号,为空时取当前站点的信息
     * @return array
     */
    final public static function get_siteinfo($siteid = '') {
        if ($siteid == '') $siteid = self::get_siteid();
        if (empty($siteid)) return false;
        $sites = pc_base::load_app_class('sites', 'admin');
        return $sites->get_by_id($siteid);
    }

参数:param::get_cookie(‘siteid’)返回参数 通常返回1 即当前站点id

    /**
     * 获取通过 set_cookie 设置的 cookie 变量 
     * @param string $var 变量名
     * @param string $default 默认值 
     * @return mixed 成功则返回cookie 值,否则返回 false
     */
    public static function get_cookie($var, $default = '') {
        $var = pc_base::load_config('system','cookie_pre').$var;
        $value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;
        if(in_array($var,array('_userid','userid','siteid','_groupid','_roleid'))) {
            $value = intval($value);
        } elseif(in_array($var,array('_username','username','_nickname','admin_username','sys_lang'))) { //  site_model auth
            $value = safe_replace($value);
        }
        return $value;
    }

进行到这里就再没有路了,我已经进入死胡同了。
错误思路2:全文搜索

http://192.168.1.55/demo1/

文件很多,一点点的找,终于在

/demo1/caches/caches_commons/caches_data/sitelist.cache.php

文件中找到如下配置

<?php
return array (
  1 => 
  array (
    'siteid' => '1',
    'name' => '默认站点',
    'dirname' => '',
    'domain' => 'http://192.168.1.55/demo1/',
    'site_title' => 'PHPCMS演示站',
    'keywords' => 'PHPCMS演示站',
    'description' => 'PHPCMS演示站',
    'release_point' => '',
    'default_style' => 'default',
    'template' => 'default',
    'setting' => '{"upload_maxsize":"2048","upload_allowext":"jpg|jpeg|gif|bmp|png|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|rar|zip|swf","watermark_enable":"0","watermark_minwidth":"300","watermark_minheight":"300","watermark_img":"statics\\/images\\/water\\/\\/mark.png","watermark_pct":"85","watermark_quality":"80","watermark_pos":"9"}',
    'uuid' => 'ccbd774d-92c9-11e6-bb0e-708bcdbe1ddb',
    'url' => 'http://192.168.1.55/demo1/',
  ),
);
?>

这上面的代码与最初的打印数组一置,也就是说终于找到了数据来源。
那么新的问题又来了,为什么sitelist.cache.php文件无法更新呢
似乎又进入绝境了。
后来经同事提醒,发现是系统权限设置的问题。


理性分析一波:
错误的iis配置下的权限图示:
错误的iis配置下的权限图示
这里没有给写入权限,表明以IIS_IUSERS的用户组权限运行php脚本程序,当然是无法将数据写入到caches文件夹中。

这里给到IIS_IUSERS写入权限,再次更新后台网站,发现网站后台站点首页已完成修改,指向新的链接。
这里写图片描述
上面的是win系统下的配置web服务运行权限。
下面是linux系统下的配置web服务运行权限。
linux系统下的配置web服务运行错误权限
这种权限配置以超管组运行而且还有可执行的权限,所以要修改为
linux系统下的配置web服务运行正确权限
web服务环境相当恶劣,我们应当尽量少的给予web服务运行权限,来保证网站服务器的相对安全。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值