配置

常用的配置参数会比较少,因为除非你有特别的定制,否则基本上默认值就可以了:

  1. use EasyWeChat\Factory;
  2. $config = [
  3. 'app_id' => 'wx3cf0f39249eb0exx',
  4. 'secret' => 'f1c242f4f28f735d4687abb469072axx',
  5. // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  6. 'response_type' => 'array',
  7. //...
  8. ];
  9. $app = Factory::officialAccount($config);

下面是一个完整的配置样例:

不建议你在配置的时候弄这么多,用到啥就配置啥才是最好的,因为大部分用默认值即可。

  1. <?php
  2. return [
  3. /**
  4. * 账号基本信息,请从微信公众平台/开放平台获取
  5. */
  6. 'app_id' => 'your-app-id', // AppID
  7. 'secret' => 'your-app-secret', // AppSecret
  8. 'token' => 'your-token', // Token
  9. 'aes_key' => '', // EncodingAESKey,兼容与安全模式下请一定要填写!!!
  10. /**
  11. * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  12. * 使用自定义类名时,构造函数将会接收一个 `EasyWeChat\Kernel\Http\Response` 实例
  13. */
  14. 'response_type' => 'array',
  15. /**
  16. * 日志配置
  17. *
  18. * level: 日志级别, 可选为:
  19. * debug/info/notice/warning/error/critical/alert/emergency
  20. * path:日志文件位置(绝对路径!!!),要求可写权限
  21. */
  22. 'log' => [
  23. 'default' => 'dev', // 默认使用的 channel,生产环境可以改为下面的 prod
  24. 'channels' => [
  25. // 测试环境
  26. 'dev' => [
  27. 'driver' => 'single',
  28. 'path' => '/tmp/easywechat.log',
  29. 'level' => 'debug',
  30. ],
  31. // 生产环境
  32. 'prod' => [
  33. 'driver' => 'daily',
  34. 'path' => '/tmp/easywechat.log',
  35. 'level' => 'info',
  36. ],
  37. ],
  38. ],
  39. /**
  40. * 接口请求相关配置,超时时间等,具体可用参数请参考:
  41. * http://docs.guzzlephp.org/en/stable/request-config.html
  42. *
  43. * - retries: 重试次数,默认 1,指定当 http 请求失败时重试的次数。
  44. * - retry_delay: 重试延迟间隔(单位:ms),默认 500
  45. * - log_template: 指定 HTTP 日志模板,请参考:https://github.com/guzzle/guzzle/blob/master/src/MessageFormatter.php
  46. */
  47. 'http' => [
  48. 'max_retries' => 1,
  49. 'retry_delay' => 500,
  50. 'timeout' => 5.0,
  51. // 'base_uri' => 'https://api.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri
  52. ],
  53. /**
  54. * OAuth 配置
  55. *
  56. * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
  57. * callback:OAuth授权完成后的回调页地址
  58. */
  59. 'oauth' => [
  60. 'scopes' => ['snsapi_userinfo'],
  61. 'callback' => '/examples/oauth_callback.php',
  62. ],
  63. ];

:heart: 安全模式下请一定要填写 aes_key

日志配置

你可以配置多个日志的 channel,每个 channel 里的 driver 对应不同的日志驱动,内置可用的 driver 如下表:

名称 描述
stack 复合型,可以包含下面多种驱动的混合模式
single 基于 StreamHandler 的单一文件日志,参数有 pathlevel
daily 基于 RotatingFileHandler 按日期生成日志文件,参数有 pathleveldays(默认 7 天)
slack 基于 SlackWebhookHandler 的 Slack 组件,参数请参考源码:LogManager.php
syslog 基于 SyslogHandler Monolog 驱动,参数有 facility 默认为 LOG_USERlevel
errorlog 记录日志到系统错误日志,基于 ErrorLogHandler,参数有 type,默认为 ErrorLogHandler::OPERATING_SYSTEM

自定义日志驱动

由于日志使用的是 Monolog,所以,除了默认的文件式日志外,你可以自定义日志处理器:

  1. use Monolog\Logger;
  2. use Monolog\Handler\RotatingFileHandler;
  3. // 注册自定义日志
  4. $app->logger->extend('mylog', function($app, $config){
  5. return new Logger($this->parseChannel($config), [
  6. $this->prepareHandler(new RotatingFileHandler(
  7. $config['path'], $config['days'], $this->level($config)
  8. )),
  9. ]);
  10. });

{info} 在你自定义的闭包函数中,可以使用 EasyWeChat\Kernel\LogLogManager 中的方法,具体请查看 SDK 源代码。

配置文件中在 driver 部分即可使用你自定义的驱动了:

  1. 'log' => [
  2. 'default' => 'dev', // 默认使用的 channel,生产环境可以改为下面的 prod
  3. 'channels' => [
  4. // 测试环境
  5. 'dev' => [
  6. 'driver' => 'mylog',
  7. 'path' => '/tmp/easywechat.log',
  8. 'level' => 'debug',
  9. 'days' => 5,
  10. ],
  11. //...
  12. ],
  13. ],