common.inc.php 是 DedeCMS 的 公共配置和初始化文件,它的主要作用是:

(图片来源网络,侵删)
- 加载核心配置:读取
data/common.inc.php中的数据库连接信息和网站基本设置。 - 定义全局常量:设置网站根目录、CMS根目录、安装状态等关键常量。
- 初始化环境:包含并执行其他核心类库和函数,为整个系统运行准备好必要的环境。
- 安全检查:进行一些基本的安全验证,防止非法访问。
任何一个 DedeCMS 页面,只要需要调用系统功能(如数据库查询、使用标签等),几乎都必须首先包含这个文件,它是整个 DedeCMS 应用的“启动器”和“基石”。
文件路径
这个文件位于 DedeCMS 安装目录的根下:
你的网站根目录/
├── dede/
│ ├── common.inc.php <-- 我们要分析的主角
│ └── ...
├── data/
│ └── common.inc.php <-- 存储数据库等敏感配置的文件
│ └── ...
├── templets/
├── uploads/
└── ...
文件代码结构与功能详解
下面我们一步步解析 common.inc.php 的典型代码结构和其功能。
安全检查与路径定义
文件的开头部分通常是一些安全检查和定义当前文件路径的代码。

(图片来源网络,侵删)
<?php
//防止恶意调用
if(!defined('DEDERPATH'))
{
exit("Request Error!");
}
// 定义本文件所在目录
define('DEDEINC', DEDERPATH . '/dede');
if(!defined('DEDERPATH')):这是一个非常经典的安全机制,它检查一个名为DEDERPATH的常量是否已经被定义,如果这个常量没有被定义,说明这个文件可能是被直接从外部访问的,而不是通过正常的入口文件(如index.php)加载的,脚本会退出并提示 "Request Error!",从而防止核心配置文件被非法读取。define('DEDEINC', DEDERPATH . '/dede');:定义一个常量DEDEINC,其值为 DedeCMS 核心include文件夹的绝对路径,这个常量在后续包含其他核心文件时会被频繁使用。
加载核心配置文件
这是 common.inc.php 最核心的功能之一——加载网站的数据库连接信息。
//加载系统配置文件 require_once(DEDERPATH.'/data/common.inc.php');
require_once():require表示“必须包含”,如果文件不存在或包含失败,会导致脚本致命错误并停止。_once表示“只包含一次”,避免重复包含导致的问题。DEDERPATH.'/data/common.inc.php':这里引入了真正的配置文件,这个文件通常是在 DedeCMS 安装过程中自动生成的,里面包含了你的数据库主机名、用户名、密码、数据库名等敏感信息。出于安全考虑,这个文件不应该被直接访问,通常它的权限会被设置为 606 或 640。
包含核心类库和函数文件
在加载完基本配置后,common.inc.php 会依次引入其他几个核心文件,这些文件构成了 DedeCMS 的运行基础。
//加载公共函数库 require_once(DEDEINC.'/arc.partview.class.php'); require_once(DEDEINC.'/arc.archives.class.php'); require_once(DEDEINC.'/arc.spec.class.php'); require_once(DEDEINC.'/arc.sgpage.class.php'); require_once(DEDEINC.'/inc_fun_funAdmin.php'); require_once(DEDEINC.'/inc/inc_fun_fun.php'); require_once(DEDEINC.'/inc/inc_catalog_options.php'); require_once(DEDEINC.'/inc/inc_functions.php'); require_once(DEDEINC.'/inc/inc_typelink.php'); require_once(DEDEINC.'/inc/inc_batchup.php'); require_once(DEDEINC.'/inc/inc_medias.php'); require_once(DEDEINC.'/inc/inc_photograph.php'); require_once(DEDEINC.'/inc/inc_seccode.php'); require_once(DEDEINC.'/inc/inc_spaceone.php'); require_once(DEDEINC.'/inc/inc_unit_functions.php'); require_once(DEDEINC.'/memberlogin.class.php'); require_once(DEDEINC '/splocks.php'); require_once(DEDERPATH.'/data/config.cache.inc.php');
- *`arc..class.php
**:这些是 DedeCMS 的“动作类”(Action Class),负责处理各种核心业务逻辑,如文章的生成、列表的生成、专题页的生成等。arc.archives.class.php` 就专门用于处理单篇文章的生成逻辑。 - *`inc_.php
**:这些是“函数库”(Function Library),包含各种辅助函数,如字符串处理、时间格式化、栏目操作、缓存管理等。inc_functions.php` 就包含了许多通用的工具函数。 memberlogin.class.php:会员登录相关的核心类。config.cache.inc.php:这是网站的全局配置缓存文件,它将后台的“系统基本参数”等信息缓存起来,以提高页面加载速度,减少数据库查询。
初始化全局对象和变量
在包含完所有必要文件后,通常会初始化一些全局对象,以便在整个系统中方便地使用。
// 初始化数据库连接
if(empty($dsql))
{
require_once(DEDEINC.'/dedesql.class.php.php');
$dsql = new Dedesql(false);
}
// 初始化用户登录对象
if(empty($cuserLogin))
{
require_once(DEDEINC.'/memberlogin.class.php');
$cuserLogin = new MemberLogin();
}
$dsql对象:这是 DedeCMS 的数据库操作对象,通过$dsql,你可以在任何页面执行 SQL 查询,如$dsql->GetOne("SELECT * FROM#@archives,`#@是 DedeCMS 的表前缀替换符,会自动替换为你安装时设置的表前缀(如dede_`)。$cuserLogin对象:这个对象用于获取当前登录会员的信息,例如检查用户是否登录、获取用户名、用户ID等。
如何使用 common.inc.php
在自己的自定义页面或开发中,如果你想使用 DedeCMS 的功能(比如查询数据库、调用系统标签),你只需要在文件开头包含它即可。

(图片来源网络,侵删)
示例:创建一个自定义页面 my_test.php
<?php
/*
* 引入 DedeCMS 核心文件
* 假设你的 DedeCMS 安装在网站根目录的 'dede' 文件夹中
*/
require_once('dede/common.inc.php');
// 你可以使用 DedeCMS 的全局对象和函数了
// 1. 使用数据库对象 $dsql 查询一条数据
$row = $dsql->GetOne("SELECT id, title FROM `#@__archives` ORDER BY id DESC LIMIT 1");
if(is_array($row))
{
echo "最新文章的ID是: " . $row['id'] . "<br>";
echo "最新文章的标题是: " . $row['title'] . "<br>";
}
// 2. 使用系统函数 GetCpuTime() 获取服务器CPU信息(如果该函数存在)
// echo "服务器CPU信息: " . GetCpuTime();
// 3. 使用 $cuserLogin 检查会员是否登录
if($cuserLogin->GetMemberType() > 0)
{
echo "欢迎, " . $cuserLogin->getUserName() . "!";
}
else
{
echo "您尚未登录或登录已过期。";
}
?>
注意:在使用 require_once('dede/common.inc.php'); 时,请确保路径是相对于当前脚本文件的正确路径。
安全注意事项
- 文件权限:
data/common.inc.php文件存储了数据库密码,必须确保其权限设置正确(通常是606或640),禁止其他用户读取。 - 防止直接访问:
common.inc.php自身也通过检查DEDERPATH常量来防止直接访问,但在某些服务器配置下,仍可能被解析,确保data目录和common.inc.php文件本身有严格的访问控制至关重要。 - 路径安全:在包含此文件时,请始终使用服务器绝对路径或相对于网站根目录的路径,避免使用 这样的相对路径,以防路径遍历攻击。
dede/common.inc.php 是 DedeCMS 的“心脏”,它通过加载配置、引入核心库、初始化全局对象,为整个 CMS 的运行奠定了坚实的基础,理解这个文件的作用和工作原理,对于二次开发、排查问题以及提升对 DedeCMS 整体架构的认识
