1. 项目背景与核心价值
在中小企业的日常运营中,进销存管理一直是业务运转的核心环节。传统的手工记账或Excel表格管理方式,随着业务量的增长会暴露出数据孤岛、统计滞后、库存不准等一系列痛点。我见过太多小微企业因为库存数据不实时导致超卖,也见过不少批发商因为采购和销售数据不同步而重复下单。这正是我们决定开源这套PHP+MySQL全功能进销存系统的初衷。
这套系统采用经典的LAMP架构(Linux+Apache+MySQL+PHP),这种技术组合在中小企业信息化建设中有着不可替代的优势。PHP作为服务端脚本语言的入门门槛低,MySQL又是最受欢迎的开源数据库,二者组合让系统既具备企业级应用的稳定性,又能让普通开发者快速上手二次开发。相比动辄数十万的商业ERP系统,我们的方案在保证核心功能完整的前提下,将部署成本降到了最低。
提示:系统已内置采购管理、销售管理、库存管理、财务统计等核心模块,支持多仓库、多规格商品管理,满足年营业额5000万以下企业的基本需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统功能全景解析
2.1 核心业务模块设计
系统采用模块化架构设计,主要功能模块包括:
-
基础数据管理
- 商品管理:支持多级分类、规格属性、条形码绑定
- 供应商/客户管理:完整的联系人及交易记录跟踪
- 仓库管理:多仓库配置与权限隔离
-
进销存业务流
- 采购流程:从询价单→采购订单→入库单的完整链路
- 销售流程:报价单→销售订单→出库单的自动化衔接
- 库存管理:实时库存、库存预警、批次效期管理
-
财务核算
- 应收应付自动生成
- 利润统计报表
- 现金流分析看板
2.2 技术架构亮点
系统后台采用经典的MVC模式:
php复制// 典型控制器示例
class InventoryController {
public function stockIn() {
$data = $this->validateStockData($_POST);
$model = new InventoryModel();
$result = $model->updateStock($data);
$this->renderJSON($result);
}
}
数据库设计遵循第三范式,核心表关系如下:
| 表名 | 关键字段 | 关联关系 |
|---|---|---|
| goods | id, name, spec | 一对多inventory |
| inventory | goods_id, warehouse_id, quantity | 多对一stock_log |
| stock_log | type, operator, before_qty, after_qty | - |
3. 环境部署实操指南
3.1 基础环境准备
推荐使用以下环境组合:
- PHP 7.4+(需开启pdo_mysql扩展)
- MySQL 5.7+(建议配置innodb_buffer_pool_size=1G)
- Apache/Nginx(配置好rewrite规则)
在Ubuntu系统上可通过以下命令快速安装:
bash复制sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql
3.2 源码部署步骤
- 下载源码包并解压到web目录
- 创建数据库并导入SQL脚本:
sql复制CREATE DATABASE erp CHARSET utf8mb4;
USE erp;
SOURCE /path/to/install.sql;
- 修改配置文件:
php复制// config/database.php
return [
'host' => '127.0.0.1',
'user' => 'erp_user',
'password' => 'StrongPassword@123',
'dbname' => 'erp'
];
- 设置目录权限:
bash复制chmod -R 755 storage/ uploads/
4. 典型问题排查手册
4.1 安装常见报错处理
问题1:数据库连接失败
- 检查MySQL是否允许远程连接(bind-address配置)
- 确认php-mysql驱动已安装(php -m | grep pdo_mysql)
- 测试命令行连接:
mysql -uuser -p dbname
问题2:页面显示空白
- 查看PHP错误日志(/var/log/apache2/error.log)
- 确保short_open_tag=On
- 检查文件权限(特别是runtime目录)
4.2 业务逻辑异常处理
库存不同步问题排查流程:
- 核对stock_log表最后操作记录
- 检查是否有未完成的出入库单
- 验证触发器是否正常执行:
sql复制SHOW TRIGGERS FROM erp;
5. 二次开发建议
5.1 扩展API接口
系统已预留API扩展入口,新增接口示例:
php复制// api/Stock.php
class Stock extends BaseAPI {
public function getRealTimeStock($goodsId) {
$model = new RealTimeModel();
return $model->getStock($goodsId);
}
}
5.2 定制报表开发
利用内置的ReportBuilder类快速生成自定义报表:
php复制$report = new ReportBuilder([
'title' => '月度销售分析',
'dataSource' => 'SELECT * FROM sales WHERE...',
'columns' => ['sales_no','customer_name','amount']
]);
echo $report->render();
6. 生产环境优化方案
6.1 性能调优要点
- MySQL配置优化:
ini复制[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
query_cache_size = 128M
- PHP加速方案:
bash复制sudo apt install php-opcache
# php.ini中配置
opcache.enable=1
opcache.memory_consumption=128
6.2 安全加固措施
- 禁用危险函数:
ini复制disable_functions = exec,passthru,shell_exec,system
- 定期备份策略:
bash复制# 每日全量备份
mysqldump -uerp -p erp | gzip > /backup/erp_$(date +%F).sql.gz
这套系统经过3年迭代和数十家中小企业的实际验证,在日均2000+单据量的压力下仍能稳定运行。我们特别建议初次使用时先完整测试所有业务流程,特别是库存盘点与财务对账功能。对于有特殊需求的客户,可以参考我们提供的插件机制进行功能扩展,而无需修改核心代码。
