Files
huangjingfen/pro_v3.5.1/help/PHP-Setup.md
apple 8592243d36 feat(hjf): H5路由修复、分销等级显示优化、个人中心等级徽章
H5 部署与路由:
- manifest.json: router.base 改为 "/" 适配 public/ 根目录部署
- nginx-crmeb.conf: 恢复与 feature/fsgx 一致的原始配置
- App.vue: PC端重定向路径改为动态推导,修复死循环加载问题
- static/html/pc.html: 动态推导 H5 根路径,适配本地/云端两种部署

H5登录:
- pages/users/login/index.vue: H5端获取验证码跳过安全验证(条件编译)

分销等级展示修复:
- AgentLevelServices: 新增 loadHjfUserListLevelMaps/pickHjfLevelRowForUserListDisplay
  统一等级名称解析逻辑,优先返回 HJF 官方名称;新增 getUpgradeTasksForLevel 封装
- UserServices/MemberLevelServices: 改用统一解析方法,修复 protected $dao 访问错误
- api/hjf/MemberController: 直接取 eb_agent_level.name,新增 agent_level 原始值返回
- admin/v1/hjf/MemberController: team() 改用封装方法替代直接访问 protected dao

个人中心等级徽章:
- pages/user/index.vue + member/index.vue: memberInfo 沿链路透传
- member/template1.vue: UID右侧显示HjfMemberBadge,直接读 userInfo.agent_level_name
  无需等待异步 memberInfo,agentLevelGrade 计算属性从名称推导颜色等级

商品列表修复:
- BaseController.php/Common.php: 恢复加密版,修复 CRMEB 授权检查失败导致的400错误
- StoreProduct model: 移除冲突的 model maker 回调

数据库:
- hjf_migration.sql: 完善会员等级体系迁移脚本
- eb_agent_level.sql: 新增等级初始数据脚本

Made-with: Cursor
2026-03-22 01:43:36 +08:00

6.0 KiB
Raw Blame History

PHP 设置说明CRMEB Pro v3.5

本文档按 CRMEB 官方4.PHP设置 整理,并补充本地/macOS 开发说明。

步骤总结

步骤 内容
安装 PHP 扩展:fileinforedisSwoole4
删除禁用函数中的 proc_open
配置修改:脚本内存限制 300M 及以上
非企业版:添加 extension = swoole_loader80.so 并重载配置;企业版无需此步

步骤详解

1. 安装扩展fileinfo、redis、Swoole4

  • 宝塔:软件商城 → PHP 设置 → 安装扩展 → 勾选 fileinfo、redis、Swoole4 → 安装。
  • macOS (Homebrew)
    # PHP 已安装前提下,扩展通常随 PHP 一起或可单独安装
    pecl install redis
    pecl install swoole
    
    若使用 brew install phpfileinfo 多已内置;需确认 php.ini 中已启用:
    extension=fileinfo
    extension=redis
    extension=swoole
    

2. 删除禁用函数 proc_open

  • 宝塔PHP 设置 → 禁用函数 → 找到 proc_open → 删除 → 保存。
  • 本地 php.ini:打开 php.ini,在 disable_functions 中移除 proc_open(若存在)。
    • 查找 php.ini 路径:php --iniphp -i | grep "Loaded Configuration"

3. 脚本内存限制 300M 及以上

  • 宝塔PHP 设置 → 配置修改 → 搜索 memory_limit → 改为 300M 或更高 → 保存。
  • 本地 php.ini
    memory_limit = 300M
    

4. Swoole Loader非企业版

  • 宝塔

    1. 将项目内 help/swoole-loader/ 下对应 PHP 版本的 .so 文件复制到 PHP 扩展目录(如 /www/server/php/80/lib/php/extensions/...)。
    2. PHP 设置 → 配置文件 → 在文件末尾添加:
      extension = swoole_loader80.so
      
      (文件名按实际版本,如 80 即 PHP 8.0
    3. 服务 → 重载配置 / 重启 PHP。
  • 企业版:无需配置 swoole_loader使用开源 Swoole 扩展即可。本项目已做兼容,可仅安装开源 swoole 扩展。


长期固定使用 PHP 8.0(推荐)

CRMEB Pro v3.5 官方以 PHP 8.0 为基准;与 Swoole Loader、扩展版本一一对应,建议本机 CLI 与文档统一为 8.0,避免混用 8.1 导致 Loader/扩展不匹配。

1. 安装并链接 Homebrew php@8.0

brew install php@8.0

Intel Mac前缀一般为 /usr/local — 让终端默认 php 指向 8.0

brew unlink php@8.1 2>/dev/null || true
brew link php@8.0 --force --overwrite

若不想改全局 link只在当前用户把 8.0 放在 PATH 最前(写入 ~/.zshrcsource ~/.zshrc

# Intel
export PATH="/usr/local/opt/php@8.0/bin:/usr/local/opt/php@8.0/sbin:$PATH"

Apple Silicon前缀一般为 /opt/homebrew

export PATH="/opt/homebrew/opt/php@8.0/bin:/opt/homebrew/opt/php@8.0/sbin:$PATH"

2. 验证

# `which php` 应指向 php@8.0,例如:
#   Intel:    /usr/local/opt/php@8.0/bin/php
#   Apple 硅: /opt/homebrew/opt/php@8.0/bin/php
which php
php -v    # 应显示 PHP 8.0.x
php -m | grep -E 'swoole|swoole_loader'
  • swooleswoole_loader非企业版均应出现Loader 只需在 PHP 8.0php.ini / conf.d 里配置 一处,避免重复加载告警。

3. 启动 API

始终在项目根目录执行:

cd /path/to/pro_v3.5.1
# 建议写死 8.0 路径,避免 PATH 里仍是 8.1
/usr/local/opt/php@8.0/bin/php -d memory_limit=300M think swoole
# Apple 硅用:/opt/homebrew/opt/php@8.0/bin/php ...

或使用 ./help/start-api.sh使用上述 php@8.0 路径或环境变量 CRMEB_PHP_BIN,不再回退到任意 php)。


验证与本地启动

一键检查(项目根目录执行)

cd /path/to/pro_v3.5.1
php -v
php -m | grep -E "fileinfo|redis|swoole"   # 应看到三行
php -r "echo 'memory_limit='.ini_get('memory_limit').PHP_EOL;"
php -r "echo in_array('proc_open', array_map('trim', explode(',', ini_get('disable_functions')))) ? 'proc_open 仍被禁用' : 'proc_open 已可用'; echo PHP_EOL;"
  • memory_limit 若小于 300M请修改 php.inimemory_limit = 300M,或使用下方启动脚本(脚本会临时指定 300M
  • proc_open 若被禁用,请在 php.inidisable_functions 中删掉 proc_open

启动 API 服务(推荐)

内存不足 300M 时,建议用 -d memory_limit=300M 启动:

cd /path/to/pro_v3.5.1
php -d memory_limit=300M think swoole

或使用项目自带脚本(同上效果):

./help/start-api.sh

成功时终端会看到 Starting swoole server...API 监听在 http://127.0.0.1:20199

若仍报「Swoole Loader ext not installed」

部分 CRMEB 加密组件会检查商业扩展 swoole_loader。需安装本项目自带的 Loader 后再启动:

  1. 查看 PHP 扩展目录php -i | grep "extension_dir"

  2. 复制对应 .so(二选一):

    • Mac Intelhelp/swoole_loader_mac/swoole_loader_80_nts.so
    • Mac M1/M2help/swoole_loader_mac_m1/swoole_loader_80_nts_arm64.so
    • Linuxhelp/swoole_loader/swoole_loader80.so(按版本选 80/81 等)
  3. php.ini 末尾添加(文件名与复制的 so 一致):

    extension = swoole_loader_80_nts.so
    

    Mac M1 用:extension = swoole_loader_80_nts_arm64.so

  4. 重载配置:brew services restart php 或重启 PHP-FPM/Web 服务CLI 直接新开终端再执行 ./help/start-api.sh

    本机已复制 .so:若已把 help/swoole_loader_mac/swoole_loader_80_nts.so 复制到扩展目录,只需在 php.iniconf.d/ 中加入一行(可参考 help/swoole-loader-local.ini)后重载 PHP。

  5. 或使用 CRMEB 企业版(通常无需 swoole_loader


参考