Appearance
问题现象
在调用微信公众号、微信支付或小程序接口时,系统抛出异常: Failed to create directory "/tmp/symfony-cache" 或 file_put_contents(/tmp/easywechat.log): Permission denied。
根本原因
微信 SDK(EasyWeChat / Symfony Cache)在默认情况下会将 access_token 和临时凭据缓存于操作系统的临时目录(通常为 /tmp/symfony-cache/ 或系统临时文件夹)。 当曾以 root 或不同用户(如 www-data)在命令行执行过脚本时,创建的临时缓存目录属于 root 用户。随后以 www 用户身份运行的 Swoole 守护进程在尝试写入该目录时,因权限不足而抛出 Permission denied 错误。
解决步骤
清理临时缓存目录
在服务器 SSH 终端中执行以下命令删除已存在的冲突临时缓存文件:
bash
rm -rf /tmp/symfony-cache*
rm -rf /tmp/easywechat*统一运行身份为 www 用户
确保 Supervisor 中的守护进程是以 www 用户启动,避免产生新的 root 权限文件:
bash
supervisorctl restart ebaozu_v4设置临时目录访问权限(如仍受限)
若系统临时目录有特殊的挂载限制,可执行以下命令确保临时目录具备读写权限:
bash
chmod 777 /tmp重新发起微信请求后,EasyWeChat 将由 www 用户重新创建临时缓存文件,问题彻底解决。