Git Product home page Git Product logo

sync-qcloud-cos's Introduction

Sync QCloud COS

Sync QCloud COS

使用腾讯云对象存储服务 COS 作为附件存储空间的 WordPress 插件

Latest Version License website contributors plugin stars plugin installs Deploy to WordPress.org

使用 WordPress Playground 在线预览 Sync QCloud COS 插件

插件特色

  • 可配置是否上传缩略图和是否保留本地备份
  • 本地删除可同步删除腾讯云上面的文件
  • 支持腾讯云 COS 存储桶绑定自定义域名
  • 支持替换数据库中旧的资源链接地址
  • 支持北京、上海、广州、香港、法兰克福等完整地域使用
  • 支持同步历史附件到 COS
  • 支持验证桶名是否填写正确
  • 支持腾讯云数据万象 CI 图片处理
  • 支持上传文件自动重命名
  • 支持媒体库编辑
  • 支持腾讯云数据万象图片极智压缩
  • 支持文件预览
  • 支持文本内容审核
  • 支持原图保护
  • 支持数据监控
  • 支持 wp-cli 命令上传文件

安装

后台安装(推荐使用)

WordPress 后台安装插件页面搜索Sync QCloud COS,点击安装

下载源码

从 GitHub 下载源码,通过 WordPress 后台上传安装,或者直接将源码上传到 WordPress 插件目录wp-content/plugins,然后在后台启用

GitHub 下载节点:https://github.com/sy-records/sync-qcloud-cos/releases/latest

修改配置

  • 方法一:在 WordPress 插件管理页面有设置按钮,进行设置
  • 方法二:在 WordPress 后台管理左侧导航栏设置腾讯云 COS,点击进入设置页面
  • 方法三:在 WordPress 后台管理左侧一级导航栏腾讯云 COS,点击进入设置页面

常量定义

数据监控中默认根据配置项判断是否展示图片处理文档处理文本审核的图表,如果需要强制展示或关闭,可以在wp-config.php中定义常量:

常量 说明
COS_DISABLE_CHARTS 禁用所有图表
COS_ENABLE_STYLE_CHART 强制展示图片处理图表
COS_ENABLE_PREVIEW_CHART 强制展示文档处理图表
COS_ENABLE_TEXT_CHART 强制展示文本审核图表
// 禁用所有图表
define('COS_DISABLE_CHARTS', true);

// 强制展示图片处理图表
define('COS_ENABLE_STYLE_CHART', true);

// 强制展示文档处理图表
define('COS_ENABLE_PREVIEW_CHART', true);

// 强制展示文本审核图表
define('COS_ENABLE_TEXT_CHART', true);

Contributors

This project exists thanks to all the people who contribute. [Contributors].

常见问题

  1. 怎么替换文章中之前的旧资源地址链接

这个插件已经加上了替换数据库中之前的旧资源地址链接功能,只需要填好对应的链接即可

  1. 使用子账户报错Cos Error Code: AccessDenied, Status Code: 403

可以使用子账户,但是 APPID 需要填写为存储桶创建者的 ID,而不是子账户的 ID。例如下文配置指南中的1250000000就是 APPID

  1. 上传图片提示图像后期处理失败,请将其缩小到2500像素并重新上传

1)配置的存储桶名称填写错误,正确的配置参照 配置指南 中的存储桶名称

v1.6.1 版本增强了校验,填写错误会给予提示;同时兼容了桶名称附带APPID的情况

2)图片确实像素大于 2500px,可以在functions.php中加入以下代码禁止大图片裁剪功能

add_filter('big_image_size_threshold', '__return_false');
  1. 从媒体库中删除了图片,但是COS中还是存在

原因是在配置页面选择了不在本地保留备份,因为 WordPress 机制问题,无法获取对应的文件信息

  1. 在插件中应该如何使用腾讯云数据万象 CI

参考:腾讯云对象存储 COS + 数据万象 CI = 完善的图片解决方案腾讯云文档 - 使用图片样式

  1. 保存配置时报错:您的站点遇到了致命错误,请查看您的站点的管理电子邮箱来获得指引

这个问题应该只出现在 Windows 的机器上,打开WP_DEBUG的话会报错:Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate,解决方法如下:

1)从 https://curl.haxx.se/ca/cacert.pem 下载最新的 cacert.pem
2)将以下行添加到php.ini中,注意修改对应的路径

curl.cainfo=/path/to/cacert.pem
  1. 保存配置时提示:ErrorCode:xxx, ErrorMessage:xxxx。如:ErrorCode:403, ErrorMessage:Request has expired

这种问题请直接前往腾讯云 对象存储文档 搜索对应的ErrorMessage信息即可,或者访问 对象存储错误码列表

  1. 跟所有使用 Guzzle 组件的插件或主题都可能发生冲突,发生报错Call to undefined method GuzzleHttp...

不可同时开启同类插件,类似于腾讯云的官方插件 tencentcloud-* 系列。

配置指南

查看详细教程https://qq52o.me/2722.html

  • 存储桶设置

访问 腾讯云控制台 创建存储桶,把创建存储桶时要求你填写的存储桶名称,把存储桶名称填到这里就可以了,没有后面的-appid
examplebucket-1250000000,其中examplebucket为存储桶名称,1250000000为 APPID。

  • 存储桶地域

选择你创建存储桶时所选的地域即可。
如果地域选择全球加速,则在 COS 控制台中开启全球加速服务,具体方法和资费问题请查看 全球加速官方文档

  • APP ID、SecretID、SecretKey

APP ID 填写上文存储桶设置中所说的125000000即可;也可以访问 腾讯云控制台 获取 APP ID、SecretID、SecretKey

插件截图

设置页面

数据库链接替换

图片极智压缩

数据监控

文档处理

文本审核

内置 wp-cli 命令

更新记录

CHANGELOG

sync-qcloud-cos's People

Contributors

hhhguany avatar sy-records avatar y2nk4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sync-qcloud-cos's Issues

自定义域名失效

已配置

  • WordPress上传路径:wp-content/uploads
  • 自定义域名:example.com

预期访问资源的链接是 example.com/ ,以前上传的资源在WordPress后台可以正常显示。

但是今天突然失效了,检查腾讯云COS存储桶发现又自动创建了 wp-content/uploads 路径。

新上传的图片不显示预览,必须以 example.com/wp-content/uploads/ 才可访问。

重新安装后仍然无效。

centos 7 缩略图无法正常上传cos

本地macos 上传没的问题,线上centos 原图可以正常上传,缩略图没有上次,调试发现:
/**

  • 上传图片的缩略图
    */
    function cos_upload_thumbs($metadata)
    debug 输出log:
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/www/wwwroot/xxx.com/uploads/2023/08/c943a6bf9758c466f20f5e9ca507cf48-300x200.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/wwwwwwrootxxx.comuploads202308c943a6bf9758c466f20f5e9ca507cf48-300x200.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:c943a6bf9758c466f20f5e9ca507cf48-150x150.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/www/wwwroot/xxx.com/uploads/2023/08/c943a6bf9758c466f20f5e9ca507cf48-150x150.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/wwwwwwrootxxx.comuploads202308c943a6bf9758c466f20f5e9ca507cf48-150x150.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:c943a6bf9758c466f20f5e9ca507cf48-768x512.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/www/wwwroot/xxx.com/uploads/2023/08/c943a6bf9758c466f20f5e9ca507cf48-768x512.jpg
    [09-Aug-2023 15:04:16 PRC] cos_upload_thumbs:/wwwwwwrootxxx.comuploads202308c943a6bf9758c466f20f5e9ca507cf48-768x512.jpg

$object_path = str_replace(get_home_path(), '', $file_path);
get_home_path()返回是/, 导致object_path不正确,

修改如下:
$object_path = $upload_path.'/'.$dirname.'/';

[BUG]使用elementor插件时url替换造成插件css无法获取

elementor插件会将css储存在Uploads文件夹下,如:

https://xxxx/wp-content/uploads/elementor/css/post-603.css?ver=1593270446

被本插件替换后会变成:

https://xxx.cos.ap-xxxx.myqcloud.com/wp-content/uploads/elementor/css/post-603.css?ver=1593270446

但实际文件并未上传cos,造成访问时该css报404错误,页面排版混乱

能否考虑添加特定文件夹不上传机制?

wordpress5.7,PHP8.0.3配置出现致命错误。

Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 77: error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: /etc/ssl/certs (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:201 Stack trace: #0 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection() #1 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError() #2 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(201): GuzzleHttp\Handler\CurlFactory::finish() #3 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(130): GuzzleHttp\Handler\CurlMultiHandler->processMessages() #4 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(145): GuzzleHttp\Handler\CurlMultiHandler->tick() #5 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(248): GuzzleHttp\Handler\CurlMultiHandler->execute() #6 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(224): GuzzleHttp\Promise\Promise->invokeWaitFn() #7 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(269): GuzzleHttp\Promise\Promise->waitIfPending() #8 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(226): GuzzleHttp\Promise\Promise->invokeWaitList() #9 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending() #10 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Coroutine.php(67): GuzzleHttp\Promise\Promise->wait() #11 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(248): GuzzleHttp\Promise\Coroutine->GuzzleHttp\Promise{closure}() #12 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(224): GuzzleHttp\Promise\Promise->invokeWaitFn() #13 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending() #14 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/Coroutine.php(103): GuzzleHttp\Promise\Promise->wait() #15 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(77): GuzzleHttp\Promise\Coroutine->wait() #16 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(153): GuzzleHttp\Command\ServiceClient->execute() #17 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php(116): GuzzleHttp\Command\ServiceClient->__call() #18 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/wordpress-qcloud-cos.php(100): Qcloud\Cos\Client->__call() #19 /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/wordpress-qcloud-cos.php(569): cos_check_bucket() #20 /www/wwwroot/NyaDoo_Main/wp-includes/class-wp-hook.php(292): cos_setting_page() #21 /www/wwwroot/NyaDoo_Main/wp-includes/class-wp-hook.php(316): WP_Hook->apply_filters() #22 /www/wwwroot/NyaDoo_Main/wp-includes/plugin.php(484): WP_Hook->do_action() #23 /www/wwwroot/NyaDoo_Main/wp-admin/admin.php(259): do_action() #24 /www/wwwroot/NyaDoo_Main/wp-admin/options-general.php(10): require_once('...') #25 {main} thrown in /www/wwwroot/NyaDoo_Main/wp-content/plugins/wordpress-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 201
此站点遇到了致命错误,请查看您站点管理员电子邮箱中收到的邮件来获得指引。

了解有关对WordPress进行故障排除的更多信息。

如果服务器与COS桶通信状况不佳,上传会失败

RT,我的服务器是甲骨文日本的ARM服务器,而储存桶选了国内。
我发现在服务器与大陆的通信状况较差的情况下,如果服务器操作文件上传超时,那么文件就必须重传了,因为插件不会再次尝试上传(即使文件已经传到服务器上了
image
而由于这个操作是在服务器上发生的,所以即使我本地网络没有问题,此时即使手动重新上传也仍还是大概率失败
对此有什么解决方法吗
附甲骨文日本到国内丢包情况(可以说是惨不忍睹
image

图片极智压缩存在问题

目前的代码中,图片极智压缩/文档处理功能虽然在开启的开关处做了可用区的判断,但看样子似乎进入这个页面时会触发一次
$bucketname.$domain_type.myqcloud.com这个拼接,然后这个拼接会触发代码中的这段判断

        $domain_type = '.cos.';
        if ($action == 'PutBucketImageStyle' || $action == 'GetBucketImageStyle' || $action == 'DeleteBucketImageStyle'
            || $action == 'PutBucketGuetzli' || $action == 'GetBucketGuetzli' || $action == 'DeleteBucketGuetzli'
            || $action == 'BindCiService' || $action == 'GetCiService' || $action == 'UnBindCiService'
            || $action == 'GetHotLink' || $action == 'AddHotLink'
            || $action == 'OpenOriginProtect' || $action == 'GetOriginProtect' || $action == 'CloseOriginProtect'
            || $action == 'OpenImageSlim' || $action == 'GetImageSlim' || $action == 'CloseImageSlim' ) {
            $domain_type = '.pic.';
        }

当我选择的可用区为全球加速
于是乎链接就会变成$bucketname.pic.accelerate.myqcloud.com
但是这个拼接域名请求下来是没有解析的
image

那么此时极智压缩和文档处理这两个页面都是打不开的,且会触发致命错误

Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve: xxx-xxxxxxxxx.pic.accelerate.myqcloud.com (Domain name not found) 
Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve: ci.accelerate.myqcloud.com (Domain name not found) 

image

附我已安装并启用的插件列表

- Gmail SMTP 1.2.3.11 版本 | 作者:[naa986](https://wphowto.net/)
- IndexNow 1.0.1 版本 | 作者:[Microsoft Bing](https://www.bing.com/indexnow)
- Redis Object Cache 2.5.0 版本 | 作者:[Till Krüss](https://objectcache.pro/?ref=oss&utm_source=wp-plugin&utm_medium=author)
- Site Kit by Google 1.114.0 版本 | 作者:[Google](https://opensource.google.com/)
- Sync QCloud COS 2.3.5 版本 | 作者:[沈唁](https://qq52o.me/)
- XML 站点地图 & Google News 5.3.6 版本 | 作者:[RavanH](https://status301.net/)
- 超级缓存 1.11.0 版本 | 作者:[Automattic](https://automattic.com/)
----------------以下为已安装但未启用插件----------------------
- Comment Reply Email 1.0.5 版本 | 作者:[WPJohnny](https://wpjohnny.com/)
- Super Page Cache for Cloudflare 4.7.5 版本 | 作者:[Optimole](https://optimole.com/)

安装插件会导致博客发布时间产生8小时的时差

插件在博客装好之后,发现文章发布时间差了8个小时,停用插件就可以恢复。从网上找了很多方法,捣鼓了三四个小时也没解决。在我的一个测试的博客上安装了插件发现同样的博客文章会有时差。

这是没安装的时候
image
下面是安装之后
image

GuzzleHttp致命错误:Call to undefined method

Fatal error: Uncaught Error: Call to undefined method GuzzleHttp\Promise\Coroutine::of() in /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php:362 Stack trace: #0 /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(181): GuzzleHttp\Promise\coroutine() #1 /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Handler/ValidatedDescriptionHandler.php(79): GuzzleHttp\Command\ServiceClient->GuzzleHttp\Command{closure}() #2 /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(85): GuzzleHttp\Command\Guzzle\Handler\ValidatedDescriptionHandler->GuzzleHttp\Command\Guzzle\Handler{closure}() #3 /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(77): GuzzleHttp\Command\ServiceClient->executeAsync() #4 / in /data/wwwroot/ahdark.rc0.co/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php on line 362

上传至媒体库时报错,无法正常使用

  • PHP版本:8.0.14
  • WordPress 版本:5.9.2
  • 插件版本:2.0.2

在通过 POST /wp-admin/async-upload.php 上传附件时出现如下错误

在使用 2.0.1 及以前版本插件时并未出现此类错误。

Fatal error: Uncaught Error: Call to undefined method GuzzleHttp\Promise\Coroutine::of() in /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php:362
Stack trace:
#0 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(181): GuzzleHttp\Promise\coroutine()
#1 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Handler/ValidatedDescriptionHandler.php(79): GuzzleHttp\Command\ServiceClient->GuzzleHttp\Command{closure}()
#2 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(85): GuzzleHttp\Command\Guzzle\Handler\ValidatedDescriptionHandler->GuzzleHttp\Command\Guzzle\Handler{closure}()
#3 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(77): GuzzleHttp\Command\ServiceClient->executeAsync()
#4 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(153): GuzzleHttp\Command\ServiceClient->execute()
#5 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php(223): GuzzleHttp\Command\ServiceClient->__call()
#6 /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php(273): Qcloud\Cos\Client->__call()
#7 /usr/share/web/wp-content/plugins/sync-qcloud-cos/wordpress-qcloud-cos.php(156): Qcloud\Cos\Client->upload()
#8 /usr/share/web/wp-content/plugins/sync-qcloud-cos/wordpress-qcloud-cos.php(294): cos_file_upload()
#9 /usr/share/web/wp-includes/class-wp-hook.php(309): cos_upload_thumbs()
#10 /usr/share/web/wp-includes/plugin.php(189): WP_Hook->apply_filters()
#11 /usr/share/web/wp-admin/includes/image.php(643): apply_filters()
#12 /usr/share/web/wp-admin/includes/media.php(421): wp_generate_attachment_metadata()
#13 /usr/share/web/wp-admin/async-upload.php(114): media_handle_upload()
#14 {main} thrown in /usr/share/web/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php on line 362

[Bug] 「不在本地保留备份」 功能不可用

「不在本地保留备份」 功能不可用
期望功能步骤:

  1. 用户上传图片(图片文件存到 /wp-content/uploads/{year}/{month} 目录下)
  2. 插件监视目录/wp-content/uploads/{year}/{month}有更新,上传到 COS
  3. 删除目录/wp-content/uploads/{year}/{month}下对应的图片文件(含各类大小的缩略图)
  4. 文章内插入的图片 URL 自动更新为 COS 的 URL(https://bucket-appid.cos.ap-xxx.myqcloud.com)

目前 Bug:
勾选「不在本地保留备份」后

  1. 图片文件依旧占用目录空间,并没有删除
  2. 文章内插入的图片 URL 并没有自动更新为 COS 的 URL

出现了新的报错

wp版本:6.4.2 版本

插件版本:2.4.1

在保存配置时出现错误代码:

Fatal error: Uncaught Error: Call to undefined method GuzzleHttp\Promise\Coroutine::of()

重现步骤:
插件在运行中,且已配置好存储桶信息

1、当修改本地文件夹和URL前缀,例如由 wp-content 改成wp-content/uploads
2、点击保存后WordPress报错:

Fatal error: Uncaught Error: Call to undefined method GuzzleHttp\Promise\Coroutine::of() in /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php:362 Stack trace: #0 /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(181): GuzzleHttp\Promise\coroutine() #1 /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Handler/ValidatedDescriptionHandler.php(79): GuzzleHttp\Command\ServiceClient->GuzzleHttp\Command\{closure}() #2 /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(85): GuzzleHttp\Command\Guzzle\Handler\ValidatedDescriptionHandler->GuzzleHttp\Command\Guzzle\Handler\{closure}() #3 /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(77): GuzzleHttp\Command\ServiceClient->executeAsync() #4 /www/wwwroot/打码 in /www/wwwroot/打码/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/promises/src/functions.php on line 362

有个问题 上传的头像图片不会上传

个人资料这里有个头像上传,上传的头像图片并不会被同步到cos里面去。

但是头像链接却显示cos的域名,所以就造成上传的头像显示不出来。

存储桶名称错误,可能是 XXX...

描述:
插件配置参数提交保存,失败错误提示“存储桶名称错误,可能是 XXX...”,经查桶名称无误且在提示列表中。
由于此时api secret使用的是子用户secret,权限限制了COS以外资源及API的访问出错,且查参考说明使用全局api secret,故更新全局secret后接入成功。
由于全局api secret使用具有极大的风险,建议作者更新新版本加入子用户访问支持。

环境:
略。(未发现兼容性问题,如需另补)

补充:
#3
该Issue疑似同样情况。

联络:
leander#tchost.cn

点保存后报错

atal error: Uncaught Error: Call to undefined method GuzzleHttp\Psr7\Uri::resolve() in /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Serializer.php:161 Stack trace: #0 /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Serializer.php(127): GuzzleHttp\Command\Guzzle\Serializer->createCommandWithUri() #1 /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Serializer.php(59): GuzzleHttp\Command\Guzzle\Serializer->createRequest() #2 /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php(193): GuzzleHttp\Command\Guzzle\Serializer->__invoke() #3 /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/command/src/ServiceClient.php(195): Qcloud\Cos\Client->commandToRequestTransformer() #4 /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud- in /data/wwwroot/jikexingkong/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Serializer.php on line 161

上传到oss很慢

上传至服务器速度都是正常的, 服务器和oss是同一地域

不太懂wordpress.. 不知道怎么排查

image

如图... 上传100%后等了比较久的时间oss才上传完毕, oss本身不应该是这个速度的.

MIME Bug

感谢开源这个优秀的项目, 最近文件上传遇到下述问题:

image

Warning: Undefined array key "jpg|jpeg|jpe" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 360 Warning: Undefined array key "gif" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 361 Warning: Undefined array key "bmp" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 363 Warning: Undefined array key "tiff|tif" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 364 Warning: Undefined array key "webp" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 365 Warning: Undefined array key "ico" in /var/www/html/wp-content/plugins/sync-qcloud-cos/sync-qcloud-cos.php on line 366 3401

我解决了这个问题:
modify$mime_types = get_allowed_mime_types(); to $mime_types = wp_get_mime_types();

Call to undefined function GuzzleHttp\Command\Guzzle\ResponseLocation\simplexml_load_string()

Fatal error: Uncaught Error: Call to undefined function GuzzleHttp\Command\Guzzle\ResponseLocation\simplexml_load_string() in /opt/wordpress/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/ResponseLocation/XmlLocation.php:38 Stack trace: #0 /opt/wordpress/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Deserializer.php(156): GuzzleHttp\Command\Guzzle\ResponseLocation\XmlLocation->before(Object(GuzzleHttp\Command\Result), Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Command\Guzzle\Parameter)) #1 /opt/wordpress/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Deserializer.php(199): GuzzleHttp\Command\Guzzle\Deserializer->triggerBeforeVisitor('xml', Object(GuzzleHttp\Command\Guzzle\Parameter), Object(GuzzleHttp\Command\Result), Object(GuzzleHttp\Psr7\Response), Array) #2 /opt/wordpress/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/Deserializer.php(116): GuzzleHttp\Command\Guz in /opt/wordpress/wp-content/plugins/sync-qcloud-cos/cos-sdk-v5/vendor/guzzlehttp/guzzle-services/src/ResponseLocation/XmlLocation.php on line 38

无法使用?

我使用WordPress 5.2.2,配置了参数,无法使用,不知道哪里出错了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.