sy-records / sync-qcloud-cos Goto Github PK
View Code? Open in Web Editor NEW💾 使用腾讯云对象存储服务COS作为附件存储空间的WordPress插件。https://wordpress.org/plugins/sync-qcloud-cos/
Home Page: https://qq52o.me/2518.html
License: Apache License 2.0
💾 使用腾讯云对象存储服务COS作为附件存储空间的WordPress插件。https://wordpress.org/plugins/sync-qcloud-cos/
Home Page: https://qq52o.me/2518.html
License: Apache License 2.0
「不在本地保留备份」 功能不可用
期望功能步骤:
/wp-content/uploads/{year}/{month}
目录下)/wp-content/uploads/{year}/{month}
有更新,上传到 COS/wp-content/uploads/{year}/{month}
下对应的图片文件(含各类大小的缩略图)目前 Bug:
勾选「不在本地保留备份」后
感谢开源这个优秀的项目, 最近文件上传遇到下述问题:
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();
目前的代码中,图片极智压缩/文档处理功能虽然在开启的开关处做了可用区的判断,但看样子似乎进入这个页面时会触发一次
$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
但是这个拼接域名请求下来是没有解析的
那么此时极智压缩和文档处理这两个页面都是打不开的,且会触发致命错误
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)
附我已安装并启用的插件列表
- 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/)
大佬,可否提交到wp到插件页,直接后台下载:)
我使用WordPress 5.2.2,配置了参数,无法使用,不知道哪里出错了。
原文件名: Screenshot from 2023-09-01 11-33-23.png
上传后的URL: https://blog-1251934191.cos.ap-chengdu.myqcloud.com/wp-content/uploads/2023/09/Screenshot-from-2023-09-01-11-33-23-2-1020x822.png
如果你感兴趣的话可以提交PR。
Submit PR if you are interested.
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进行故障排除的更多信息。
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
wp版本:6.4.2 版本
插件版本:2.4.1
在保存配置时出现错误代码:
请问插件支持css,js这些文件的存储吗?
还有可以走内网吗?
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
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错误,页面排版混乱
能否考虑添加特定文件夹不上传机制?
个人资料这里有个头像上传,上传的头像图片并不会被同步到cos里面去。
但是头像链接却显示cos的域名,所以就造成上传的头像显示不出来。
在通过 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
已配置
预期访问资源的链接是 example.com/ ,以前上传的资源在WordPress后台可以正常显示。
但是今天突然失效了,检查腾讯云COS存储桶发现又自动创建了 wp-content/uploads 路径。
新上传的图片不显示预览,必须以 example.com/wp-content/uploads/ 才可访问。
重新安装后仍然无效。
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
重现步骤:
插件在运行中,且已配置好存储桶信息
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
如题,删掉空行即可
本地macos 上传没的问题,线上centos 原图可以正常上传,缩略图没有上次,调试发现:
/**
$object_path = str_replace(get_home_path(), '', $file_path);
get_home_path()返回是/, 导致object_path不正确,
修改如下:
$object_path = $upload_path.'/'.$dirname.'/';
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.