TP6 接入 EasyWeChat 缓存报错

环境

PHP7.2 \ Apache \ CentOS \


报错信息
file_exists(): open_basedir restriction in effect. File(/tmp/symfony-cache/easywechat) is not within the allowed path(s): (/var/www/html)

问题文件

\vendor\symfony\cache\Traits\FilesystemCommonTrait.php

问题代码
TP6 接入 EasyWeChat 缓存报错_第1张图片
图片.png

分析

根据EasyWeChat 官方文档提示,缓存使用的是 symfony/cache,跟踪代码后发现 底层使用 sys_get_temp_dir函数,由于我们项目是分布式部署的,而且现在报错信息提示没有写入权限,故需要改变缓存驱动来解决这个问题。

根据EasyWeChat 官方文档提示,可以使用redis作为驱动, 也可以自定义缓存类前提是必须遵循PSR-16规范。

TP官方自带缓存类,而且符合该规范,并且我们项目使用的是Redis作为存储引擎,部署上没有问题。所以直接替换 EasyWeChat 的缓存驱动为 tp-cache,问题解决。

TP6 接入 EasyWeChat 缓存报错_第2张图片
EasyWeChat 缓存部分
TP6 接入 EasyWeChat 缓存报错_第3张图片
TP6 缓存文档部分
TP6 接入 EasyWeChat 缓存报错_第4张图片
程序修改部分

EasyWeChat 缓存文档地址:
https://www.easywechat.com/docs/4.1/customize/cache

ThinkPHP6 缓存文档地址:
https://www.kancloud.cn/manual/thinkphp6_0/1037634

你可能感兴趣的:(TP6 接入 EasyWeChat 缓存报错)