DeDeCMS二次开发教程之程序安装

最近因项目需要用到dedecms,于是决定好好研究一下DeDecms。并记录下来,必备后续。

下载

从官方网站下载
http://www.dedecms.com/products/dedecms/downloads/
当前最新版本是DedeCMS V5.7 SP1
下载后解压,包含docs和uploads文件夹,docs文件夹不需要管理,里面主要是版权申明和更新说明等。我们开发主要是了解uploads下内容,其内部结构如下:
这里写图片描述

程序安装

项目入口文件index.php

下载dedecms后,当第一次执行程序中index.php文件(localhost/dedecms/),程序就会开始安装。程序安装首先从index.php文件说起,打开该文件我们可以看到,最前面几行代码如下:

if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))//判断数据库配置文件是否存在
{
    header('Location:install/index.php');
    exit();
}

当common.inc.php文件不存在时候,就执行install/index.php文件,显然是执行安装文件。common.inc.php文件属于配置文件,在实际上线后,我个人觉得,这上面的几行php代码完全可以删除掉,且连同install目录一块删除掉。

安装入口文件

install/index.php文件前面的代码如下:

/**
 * @version        $Id: index.php 1 13:41 2010年7月26日Z tianya $
 * @package        DedeCMS.Install
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
@set_time_limit(0); //设置程序相应时间
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE); //设置错误级别

$verMsg = ' V5.7 UTF8SP1';  //定义版本号
$s_lang = 'utf-8';   
$dfDbname = 'dedecmsv57utf8sp1';  //数据库名字
$errmsg = '';
$install_demo_name = 'dedev57demo.txt';
$insLockfile = dirname(__FILE__).'/install_lock.txt'; //锁文件
$moduleCacheFile = dirname(__FILE__).'/modules.tmp.inc';  //缓存文件

define('DEDEINC',dirname(__FILE__).'/../include');  //定义根目录下的include目标
define('DEDEDATA',dirname(__FILE__).'/../data');  //定义数据目录
define('DEDEROOT',preg_replace("#[\\\\\/]install#", '', dirname(__FILE__)));  //获取网站根目录
header("Content-Type: text/html; charset={$s_lang}");  //设备编码

require_once(DEDEROOT.'/install/install.inc.php'); //加载安装需要的函数文件
require_once(DEDEINC.'/zip.class.php');//加载压缩文件

foreach(Array('_GET','_POST','_COOKIE') as $_request) //对数据进行过滤,并将数组元素转为变量
{
    foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
}

require_once(DEDEINC.'/common.func.php'); //加载dedecms基本函数文件

if(file_exists($insLockfile)) //为了防止重复安装,添加锁文件
{
    exit(" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
}

第一步安装(使用协议书)

默认安装步骤是第一步,执行的文件时step-1.html文件,主要是版权信息。

if(empty($step)) //默认从第一步开始安装
{
    $step = 1;
}
if($step==1)
{
    include('./templates/step-1.html');
    exit();
}

这里写图片描述

第二步安装(环境测试)

可以从step-1.html中代码看出,第二步还是执行index.php文件,只是传递一个step为2的变量。

 $phpv = phpversion(); //获取php版本
    $sp_os = PHP_OS; //php运行的系统
    $sp_gd = gdversion(); //判断GD库版本
    $sp_server = $_SERVER['SERVER_SOFTWARE'];服务器标识的字串 
    $sp_host = (empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_HOST'] : $_SERVER['REMOTE_ADDR']); //获取用户ip,如果ip不存在,就获取主机名
    $sp_name = $_SERVER['SERVER_NAME']; //获取服务器主机名称
    $sp_max_execution_time = ini_get('max_execution_time'); //判断是否设置了最大执行时间
    $sp_allow_reference = (ini_get('allow_call_time_pass_reference') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');
    $sp_allow_url_fopen = (ini_get('allow_url_fopen') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');
    $sp_safe_mode = (ini_get('safe_mode') ? '<font color=red>[×]On</font>' : '<font color=green>[√]Off</font>');
    $sp_gd = ($sp_gd>0 ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');
    $sp_mysql = (function_exists('mysql_connect') ? '<font color=green>[√]On</font>' : '<font color=red>[×]Off</font>');

    if($sp_mysql=='<font color=red>[×]Off</font>')
    $sp_mysql_err = TRUE;
    else
    $sp_mysql_err = FALSE;

    $sp_testdirs = array(
        '/',
        '/plus/*',
        '/dede/*',
        '/data/*',
        '/a/*',
        '/install',
        '/special',
        '/uploads/*'
    );
    include('./templates/step-2.html');
    exit();

执行结果如下:
这里写图片描述

第三步安装(设置参数)

在该步骤中,主要是初始化一些默认的设置,如数据库名称、数据表前缀、Cookie加密码等,然后以表单形式提交。
这里写图片描述

第四步安装(普通安装)

在该步骤中主要进行,连接数据库、创建数据库、设置编码、读取配置文件信息并用提交的数据进行相应的替换、修改数据目录权限、将数据库配置信息添加到data/common.inc.php中,其他配置信息添加到、创建数据表并导入数据、更新配置、增加管理员帐号、安装体验数据。
这里写图片描述
到这一步,安装已经算是完成了。

最后一步(初始化)

这里写图片描述
前端界面(但是第三步选择不同的模块界面可能不一样)
这里写图片描述
后端界面
这里写图片描述

备注

1.字符串中包含变量,使用{}包含变量,对变量做界定,如”hello{$name}goodmonery”,如果没有界定符就会出错。
2.magic_quotes_gpc,脚本将自动过滤post、get、cookie中数据,如果没有,通过使用addslashes对post、get、cookie中的数据进行过滤。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值