我们将从几个层面来讲解 Phpcms 的路径:

- 核心目录结构:认识 Phpcms 文件夹都代表什么。
- 访问路径:用户在浏览器中输入的网址。
- 程序中的路径:PHP 代码中如何引用文件、目录和生成 URL。
- 常见问题与解决方案:关于路径的常见错误和解决方法。
Phpcms 核心目录结构
假设你的 Phpcms 安装在网站的根目录 下,其目录结构通常如下:
/your_website/
├── api/ # API 接口目录
├── caches/ # 系统缓存目录(需可写权限)
├── caches/ # 模板缓存目录(需可写权限)
├── configs/ # 配置文件目录
│ ├── database.php # 数据库配置文件
│ └── ...
├── css/ # CSS 样式文件目录
├── favicon.ico # 网站图标
├── flash/ # Flash 文件目录
├── fonts/ # 字体文件目录
├-- html/ # 生成静态文件的目录(需可写权限)
├-- index.php # 网站入口文件(非常重要!)
├-- install/ # 安装程序目录(安装完成后建议删除)
├-- js/ # JavaScript 文件目录
├-- phpcms/ # Phpcms 核心程序目录
│ ├── admin/ # 后台管理程序目录
│ ├── libs/ # 核心类库和函数库
│ │ ├── classes/ # 类库文件
│ │ ├── functions/ # 函数库文件
│ │ └── ...
│ ├── modules/ # 模块目录(如内容模块、会员模块等)
│ ├── statics/ # 静态资源目录(与根目录下的 statics 不同)
│ └── ...
├-- statics/ # 网站(前台)静态资源目录(CSS, JS, images等)
│ ├── css/
│ ├── images/
│ └── js/
├-- uploadfile/ # 上传文件目录(图片、附件等,需可写权限)
├-- uploadfile/ # 附件上传目录
└── ... # 其他自定义目录或文件
关键目录说明:
/phpcms/: 这是 Phpcms 的心脏,包含了所有核心功能模块、类库和函数。/index.php: 前台程序的统一入口文件,所有前台页面的访问都会先经过这个文件。/statics/: 存放网站前台使用的 CSS、JS、图片等静态资源。/uploadfile/: 存储用户通过后台或表单上传的所有文件,如文章图片、附件等。/html/: 用于存放由动态页面生成的静态 HTML 文件,以减轻服务器压力。/caches/: 存放系统运行时产生的缓存文件,以提高性能。
访问路径
这是指用户在浏览器地址栏中输入的 URL,Phpcms 的访问路径由其 URL 重写规则决定。
动态路径(默认)
如果未开启 URL 静态化,访问路径会包含 index.php 和模块参数。

- 首页:
http://www.yourdomain.com/ - 列表页:
http://www.yourdomain.com/index.php?m=content&c=index&a=lists&catid=1m: 模块 (module),这里是content内容模块。c: 控制器 (controller),这里是index。a: 方法 (action),这里是lists列表方法。catid: 分类 ID。
- 内容页:
http://www.yourdomain.com/index.php?m=content&c=index&a=show&catid=1&id=100
静态路径(推荐)
通过后台开启 URL 静态化后,路径会变得简洁、美观,也有利于 SEO,这通常需要服务器配置伪静态规则(如 Apache 的 .htaccess 或 Nginx 的 rewrite 规则)。
- 首页:
http://www.yourdomain.com/ - 列表页:
http://www.yourdomain.com/html/list/1/ - 内容页:
http://www.yourdomain.com/html/show/1-100.html
这里的 1 是分类 ID,100 是内容 ID,这些路径格式是在 Phpcms 后台的“URL 静态化”设置中配置的。
程序中的路径
在 Phpcms 的 PHP 模板文件(.php)或控制器中,经常需要手动处理路径,以下是几种常用方法:
a. 获取网站根目录 URL
在模板中,可以使用 get_site_url() 函数来获取网站在 configs/system.php 中配置的域名。

// 在模板文件中 $site_url = get_site_url(); // 输出类似: http://www.yourdomain.com
b. 引用静态资源(CSS, JS, Images)
最佳实践:在模板中引用静态资源时,永远不要使用硬编码的绝对路径(如 /statics/css/style.css),因为这样无法在子目录安装时正常工作。
推荐方法 1:使用 {CSS_PATH}, {JS_PATH},{IMG_PATH}`
Phpcms 模板引擎内置了这些变量,它们会自动指向 /statics/ 目录。
<!-- 在模板文件 .html 中 -->
<link href="{CSS_PATH}style.css" rel="stylesheet" type="text/css">
<script src="{JS_PATH}jquery.min.js"></script>
<img src="{IMG_PATH}logo.png" alt="Logo">
这是最推荐、最标准的方式。
推荐方法 2:使用 phpcms::L() 函数
如果静态资源在 /phpcms/statics/ 目录下,可以使用 L() 函数。
<link href="{L('style.css')}" rel="stylesheet">
L() 函数会自动查找并返回 /phpcms/statics/ 下的文件路径。
c. 生成链接
在模板中生成模块、分类或内容的链接,应使用系统提供的函数,而不是手动拼接 URL。
- 分类链接:
CATEGORY_URL - 内容链接:
URL - 首页链接:
SITE_URL或
示例(在内容列表模板 list.php 中):
<?php
// 循环输出分类
if (is_array($cats)) {
foreach($cats as $cat) {
// 正确生成分类链接
$category_url = $cat['url']; // 系统自动生成的URL
// 或者使用函数
// $category_url = go($cat['catid']);
echo "<a href='{$category_url}'>{$cat['catname']}</a>";
}
}
// 循环输出文章列表
if (is_array($infos)) {
foreach($infos as $info) {
// 正确生成文章链接
$article_url = $info['url']; // 系统自动生成的URL
// 或者使用函数
// $article_url = go($info['catid'], $info['id']);
echo "<a href='{$article_url}'>{$info['title']}</a>";
}
}
?>
关键点:$cat['url'] 和 $info['url'] 是 Phpcms 在解析模板时自动生成的,它会根据后台的 URL 设置(动态或静态)返回正确的链接,使用 go() 函数也可以达到同样效果。
d. 获取服务器物理路径
在 PHP 代码中,如果需要操作服务器上的文件(如读写缓存、处理上传文件),需要使用物理路径。
__ROOTPATH__: Phpcms 定义的常量,指向网站根目录的物理路径。PHPCMS_PATH: Phpcms 核心目录的物理路径,通常指向/phpcms/。
示例:
// 在控制器或模型中 $cache_file = __ROOTPATH__ . 'caches/my_cache.txt'; // 或者 $upload_dir = PHPCMS_PATH . 'uploadfile/';
常见问题与解决方案
问题 1:图片、CSS 样式加载不出来
- 原因:通常是路径错误,最常见的是在模板中使用了硬编码的绝对路径(如
/statics/...),当网站安装在子目录(如/cms/)
