通达OA目录结构与核心文件解析

一、引言

深入理解通达OA的目录结构是进行二次开发的基础。通达OA采用了清晰的模块化设计,将服务程序、应用程序、Web页面巧妙整合与组织,便于理解和扩充。本文将详细解析OA的目录层次结构,并深入探讨核心文件的作用和使用方法。

二、目录结构总览

通达OA的根目录为 MYOA,其下包含多个功能明确的子目录:

复制代码
MYOA
├── attach          # OA附件文件存放目录
├── bak             # 数据库默认备份目录
├── bin             # PHP、Zend等主程序及配置文件
├── data5           # MySQL数据库文件目录
├── logs            # OA服务等的日志文件目录
├── MyAdmin         # MySQL管理工具
├── mysql5          # MySQL主程序文件
├── nginx           # Nginx Web应用服务
├── tmp             # 临时文件目录
└── webroot         # WEB根目录(PHP程序目录)

2.1 关键目录说明

1. attach目录

  • 存放OA系统的附件文件
  • 所有模块上传的附件默认存储于此
  • 备份时必须包含此目录

2. bak目录

  • 数据库默认备份目录
  • 系统自动备份的SQL文件存放于此
  • 可配置自动备份策略

3. bin目录

  • 存放PHP、Zend等核心程序
  • 包含服务配置文件 service.ini
  • 包含PHP配置文件 php.ini

4. data5目录

  • MySQL数据库文件目录
  • 包含多个数据库:
    • TD_OA:通达OA主数据库
    • TD_OA_ARCHIVE:归档数据库
    • BUS:公交线路查询数据库
    • crscell:报表数据库

5. webroot目录

  • WEB根目录,所有PHP程序存放于此
  • 是二次开发的主要工作目录

三、webroot目录详解

webroot 是二次开发最常接触的目录,其结构如下:

复制代码
webroot
├── attachment      # 头像、模块配置文件目录
├── general         # 主要模块目录
│   ├── ipanel      # 主控面板
│   ├── mytable     # 桌面模块程序
│   ├── system      # 系统功能模块
│   └── ...         # 其他业务模块
├── inc             # 系统通用程序及函数目录
├── ispirit         # OA精灵页面
├── mobile          # OA移动界面
├── module          # 系统组件
│   ├── dept_select # 部门选择组件
│   ├── editor      # HTML编辑器组件
│   ├── OC          # Office文档在线编辑
│   ├── user_select # 用户多选组件
│   └── ...         # 其他组件
├── portal          # 门户界面
├── static          # 静态文件目录
│   ├── common      # 通用CSS和图片
│   ├── images      # 标签引用的图片
│   ├── js          # JavaScript文件
│   └── theme       # 界面主题
├── templates       # 登录界面模版
└── webservice      # WebService接口(不建议使用)

3.1 general目录

general 目录是存放所有应用模块的地方,每个模块拥有独立的子目录。开发新模块时,需要在此目录下创建新文件夹。

常见模块示例:

  • ipanel:主控面板,集成菜单、短信箱等
  • mytable:桌面模块
  • system:系统管理功能
  • workflow:工作流模块
  • meeting:会议管理模块

3.2 inc目录

inc 目录存放系统通用程序及函数,是OA的核心目录之一。所有二次开发都需要频繁引用此目录下的文件。

3.3 module目录

module 目录存放系统公用组件,如人员选择、部门选择、编辑器等。开发时可以直接调用这些组件,无需重复开发。

四、核心文件解析

通达OA的核心文件位于 webroot\inc 目录下,主要包括以下四个文件:

4.1 auth.inc.php

作用:权限验证程序

功能特点

  • Session合法性验证
  • 访问路径授权验证
  • 用户身份认证

使用方法

复制代码
include_once("inc/auth.inc.php");

使用场景

  • 所有需要权限控制的页面
  • 包含敏感数据的页面
  • 需要用户登录才能访问的页面

注意事项

  • 必须在页面开头包含
  • 包含后会自动进行权限检查
  • 如果未登录会自动跳转登录页

4.2 header.inc.php

作用:页面渲染头部

功能特点

  • 设置HTML标准和字符集
  • 加载标准样式表(style.css)
  • 设置页面标题
  • 渲染页面头部导航

使用方法

复制代码
$HTML_PAGE_TITLE = _("页面标题");
include_once("inc/header.inc.php");

使用场景

  • 所有包含HTML输出的页面
  • 需要使用OA标准界面的页面

注意事项

  • 使用前需设置 $HTML_PAGE_TITLE 变量
  • 支持国际化,使用 _() 函数包裹标题

4.3 common.inc.php

作用:通用功能和安全过滤

功能特点

  • 用户输入数据过滤($_GET$_POST$_COOKIE
  • 安全校验
  • 通用工具函数

使用方法

复制代码
include_once("inc/common.inc.php");

使用场景

  • 处理用户输入的页面
  • 需要数据安全校验的页面

注意事项

  • 如果已包含 auth.inc.phpheader.inc.php,无需重复包含
  • 自动对全局变量进行安全过滤

4.4 td.class.php

作用:数据库操作类

功能特点

  • 数据库连接管理
  • SQL语句安全验证
  • 提供常用数据库操作方法

使用方法

复制代码
include_once("inc/td.class.php");

使用场景

  • 所有需要数据库操作的页面

注意事项

  • 如果已包含 auth.inc.php,无需重复包含
  • 自动处理数据库连接和关闭
  • 提供SQL注入防护

五、核心文件引用关系

四个核心文件之间存在引用关系,了解这些关系可以避免重复包含:

复制代码
auth.inc.php
    ├── common.inc.php  (已包含)
    └── td.class.php    (已包含)

header.inc.php
    └── common.inc.php  (已包含)

td.class.php
    └── db_config.php   (数据库配置)

推荐引用策略

页面类型 推荐包含
需要权限验证的页面 auth.inc.php
公开页面但需要标准界面 header.inc.php
仅需数据库操作 td.class.php
仅需安全过滤 common.inc.php

六、国际化支持

通达OA采用PHP的gettext扩展实现国际化(i18n)。所有中文字符串需要使用 _() 函数包裹:

复制代码
$HTML_PAGE_TITLE = _("新闻");
echo _("欢迎使用通达OA");

国际化目录结构

复制代码
webroot\static\lang
├── zh_CN          # 简体中文
│   └── LC_MESSAGES
│       └── oa.mo
├── en_US          # 英文
│   └── LC_MESSAGES
│       └── oa.mo
└── ...            # 其他语言

七、备份策略

根据官方文档,以下目录在备份时必须包含:

  • MYOA\attach:附件文件
  • MYOA\data5:数据库文件
  • MYOA\webroot\attachment:头像和配置文件

建议定期备份以上目录,确保数据安全。

相关推荐
通玄1 小时前
Jetpack Compose 入门系列(八):Compose 中的副作用处理
android
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
数据库·人工智能·ai编程·ai工作流·企业ai
流氓也是种气质 _Cookie1 小时前
如何创建MCP
android·adb
霸道流氓气质2 小时前
Harness Engineering 从理论到实战:基于 Spring AI Alibaba 的完整实现指南
数据库·人工智能·spring·harness
linuxoffer2 小时前
MYSQL回收碎片空间
数据库·mysql
Kapaseker2 小时前
扶我起来,Compose Styles API 进阶
android·kotlin
名字还没想好☜2 小时前
Go 并发实战:用 channel 实现 worker pool
java·数据库·后端·golang·go
亘元有量-流量变现2 小时前
内外联动精细化运营:解锁安卓APP推广降本增效新路径
android·用户运营·aso优化·亘元有量·方糖试玩
nVisual2 小时前
nVisual:AI驱动的智能排障,平均响应时间缩短40%
android·人工智能·缓存