我的知识记录

易优CMS阿里云OSS上传图片报错AccessDenied_权限配置_Bucket策略

易优CMS配置阿里云OSS上传报AccessDenied,是RAM用户权限不足导致。OSS配置里的AccessKey对应的RAM用户没有该Bucket的读写权限。去阿里云控制台→RAM访问控制→用户,找到对应用户,添加权限`AliyunOSSFullAccess`(全部OSS权限)或自定义策略只允许访问指定Bucket。

自定义策略示例(只允许访问指定Bucket): ``` { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": ["oss:*"], "Resource": ["acs:oss:*:*:bucket名", "acs:oss:*:*:bucket名/*"] } ] } ``` 把bucket名换成实际的。自定义策略比全量权限更安全,遵循最小权限原则。

Bucket权限设置。OSS控制台→Bucket列表→对应Bucket→权限管理→读写权限,设为"公共读"(网站图片需要公开访问)或"私有"(需要签名URL访问,易优CMS默认公共读)。私有Bucket上传后图片URL带签名,有时效,不适合网站图片展示。网站用OSS存图片选公共读。

跨域配置(CORS)。如果后台是通过浏览器直传OSS(不是服务器中转),需要配置Bucket跨域规则。OSS控制台→Bucket→数据安全→跨域设置,添加规则:来源填网站域名,允许Methods选POST/GET/PUT,允许Headers填*。不配跨域浏览器直传会失败。易优CMS默认是服务器端上传(PHP中转),一般不需要配CORS,但如果用了直传插件就要配。

Endpoint填错也会报AccessDenied或连接失败。Endpoint必须和Bucket同地域,比如Bucket在上海(oss-cn-shanghai),不能填杭州的Endpoint。内网Endpoint(带-internal)只能在阿里云同地域服务器用,本地测试或非阿里云服务器要用外网Endpoint。易优CMS后台OSS配置里的Endpoint填外网地址。

AccessKey被禁用或删除。RAM控制台看用户状态,被禁用了启用,被删了重建。AccessKey Secret只在创建时显示一次,忘了就重新生成一对,更新到易优CMS配置。密钥不要泄露,不要提交到Git仓库。

Bucket名称拼写错误。Bucket名全局唯一,填错了就访问到别人的Bucket(没权限)或不存在的Bucket(NoSuchBucket)。复制Bucket名时注意大小写(OSS Bucket名全小写),不要有多余空格。

测试上传小文件。先传一张几十KB的图片,排除大小限制。OSS本身没有大小限制,但PHP的upload_max_filesize和post_max_size会限制。大文件上传失败检查这两个PHP参数,宝塔PHP设置里调大(如50M),重启PHP。

查看OSS访问日志。OSS控制台→日志管理,开启访问日志后能看到每次请求的状态码和错误信息。403 Forbidden对应AccessDenied,看请求的User-Agent和资源路径,确认是易优CMS的请求。根据日志里的具体错误码(如InvalidAccessKeyId、SignatureDoesNotMatch、NoSuchBucket)精准定位。

配置正确后,易优CMS后台上传的图片自动存到OSS,网站源服务器不占磁盘。图片访问域名用绑定的自定义域名(如img.example.com),在OSS控制台绑定域名并CNAME解析,比用默认OSS域名速度快且利于SEO。

易优CMS阿里云OSS上传图片报错AccessDenied_权限配置_Bucket策略

标签:

更新时间:2026-08-26 18:11:28

上一篇:PbootCMS后台填写授权码INF_免费授权_付费授权_域名绑定_常见问题

下一篇:宝塔面板提示请先安装phpMyAdmin:安装、配置、使用与替代方案