```
feat(shopro_wechat_trade): 更新插件文档并改进安装流程 - 在 README.md 中添加详细的权限问题解决方案,包括目录不可写和代码部署覆盖两种常见场景 - 添加后台文件冲突提示的处理说明 - 将 info.ini 中 state 从 0 改为 1,默认启用插件 - 在 Installer.php 中添加异常处理,防止缓存刷新失败导致安装中断 - 增强文件写入错误检测,提供更清晰的权限问题提示 - 添加 Service::refresh 的异常捕获和警告日志 ```
这个提交包含在:
@@ -13,13 +13,38 @@
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
# 上传 addons/shopro_wechat_trade 后
|
||||
# 上传 addons/shopro_wechat_trade 后(推荐 SSH,不要只靠后台点启用)
|
||||
php think shopro_wechat_trade:install
|
||||
php think shopro_wechat_trade:verify
|
||||
```
|
||||
|
||||
后台:**系统管理 → 商城配置 → 微信交易合规**
|
||||
|
||||
### 启用报 Permission denied / 过一阵又变关闭
|
||||
|
||||
常见两类原因:
|
||||
|
||||
1. **目录不可写**(截图里 `runtime/cache/... Permission denied`)
|
||||
后台「启用插件」会写 `info.ini`、`application/extra/addons.php`、`public/assets/js/addons.js` 并清缓存。PHP 运行用户(宝塔多为 `www`)必须可写:
|
||||
- `runtime/`(含 `cache/`、`log/`)
|
||||
- `addons/shopro_wechat_trade/info.ini`
|
||||
- `application/extra/addons.php`
|
||||
- `public/assets/js/addons.js`
|
||||
|
||||
```bash
|
||||
cd /www/wwwroot/xgsc.gynhc.com
|
||||
chown -R www:www runtime addons application/extra public/assets/js/addons.js
|
||||
chmod -R u+rwX runtime
|
||||
php think shopro_wechat_trade:install
|
||||
```
|
||||
|
||||
2. **代码部署覆盖 `info.ini`**
|
||||
仓库里若 `state = 0`,每次 git/rsync 全量同步会把线上已启用状态盖回关闭。本仓库默认 `state = 1`;若你方部署脚本会覆盖 `addons/*/info.ini`,请在服务器保留 `state = 1` 或部署后执行 `php think shopro_wechat_trade:install`。
|
||||
|
||||
### 后台提示「文件冲突」
|
||||
|
||||
启用时若提示与 `application/admin/.../shopro_wechat_trade/*` 冲突,属正常:插件要把后台菜单/页面复制到主工程。仓库已含这些文件时选 **继续操作** 即可;更稳的是只用 CLI `shopro_wechat_trade:install` 修复,不必反复在插件中心开关。
|
||||
|
||||
## 汇付配合
|
||||
|
||||
若使用汇付小程序支付,需同步部署最新 `shopro_huifu`(支付通知会落库微信 `transaction_id`)。
|
||||
|
||||
@@ -4,7 +4,7 @@ intro = 微信小程序购物订单与发货信息同步
|
||||
author = Shopro
|
||||
website = https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order_center/order_center.html
|
||||
version = 1.0.0
|
||||
state = 0
|
||||
state = 1
|
||||
url = /addons/shopro_wechat_trade
|
||||
first_menu = shopro_wechat_trade/config
|
||||
license = regular
|
||||
|
||||
@@ -47,7 +47,11 @@ class Installer
|
||||
}
|
||||
}
|
||||
|
||||
Service::refresh();
|
||||
try {
|
||||
Service::refresh();
|
||||
} catch (\Exception $e) {
|
||||
self::log($output, ' [warn] 插件缓存刷新失败: ' . $e->getMessage());
|
||||
}
|
||||
self::log($output, '安装完成: /admin/shopro_wechat_trade/config');
|
||||
}
|
||||
|
||||
@@ -64,8 +68,20 @@ class Installer
|
||||
} else {
|
||||
$content = rtrim($content) . "\nstate = " . $state . "\n";
|
||||
}
|
||||
file_put_contents($file, $content, LOCK_EX);
|
||||
if (file_put_contents($file, $content, LOCK_EX) === false) {
|
||||
throw new \RuntimeException('无法写入 ' . $file . ',请检查 addons 目录权限(勿用 root 上传后未 chown www)');
|
||||
}
|
||||
\think\Config::set($name, null, 'addoninfo');
|
||||
\think\Config::set('addon-info-' . $name, null);
|
||||
|
||||
if ($state === 1) {
|
||||
try {
|
||||
Service::refresh();
|
||||
} catch (\Exception $e) {
|
||||
self::log($output, ' [warn] Service::refresh 失败: ' . $e->getMessage());
|
||||
self::log($output, ' [warn] 请修复 runtime/cache、application/extra/addons.php、public/assets/js/addons.js 写权限后重跑 install');
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户