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
相关产品推荐
相关产品推荐

