You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2 Summernote上传至S3时抛出yii\di\NotInstantiableException异常求助

问题解决:Yii2 Summernote S3上传报NotInstantiableException

直接修复方案

修改控制器actions()方法里的类路径,将原本的common\actions\SignAwsRequestAction替换为组件自带的命名空间路径:

public function actions()
{
    return [
        'sign-aws-request' => [
            'class' => 'marqu3s\summernote\actions\SignAwsRequestAction', // 修正此处路径
            'clientPrivateKey' => $key,
            'clientPrivateSecret' => $secret,
            'expectedBucketName' => $editor_img_bucket,
            'expectedHostName' => $editor_img_bucket,
            'expectedMaxSize' => '1024000'
        ]
    ];
}

排查验证步骤

  • 确认类命名空间:检查_protected/vendor/marqu3s/yii2-summernote/actions/SignAwsRequestAction.php文件顶部的命名空间,应为namespace marqu3s\summernote\actions;,控制器必须使用该完整命名空间引用类。
  • 刷新自动加载缓存:执行composer dump-autoload命令,确保Composer自动加载映射与当前文件路径匹配。
  • 核对vendor目录配置:主项目composer.json中config.vendor-dir配置为vendor/,但实际vendor目录位于_protected/vendor,需将该配置修正为"_protected/vendor",再重新执行composer dump-autoload。

问题根源分析

之前功能正常,大概率是你曾将组件的SignAwsRequestAction.php文件复制到common/actions/目录下,当时common\actions\SignAwsRequestAction的路径有效。后续改动(如组件更新、删除common目录下的复制文件、vendor路径迁移)导致该路径失效,而组件自带的类因命名空间引用错误无法被加载。


内容的提问来源于stack exchange,提问作者vanarie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:42:46