Thinkphp6一直用的一个项目,使用MINIO用的AWS SDK一直正常。
因为需要用webman复写了项目,当在webman中即便require也不行。
对比过composer.json的require版本都是2.8,SDK也是相同的SDK。
想不出是我少了什么,还是webman比tp6少了啥?
<?php
namespace app\common;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
class Minio
{
private function client()
{
//
$config = config('sign.minio');
$client = new S3Client([
'version' => 'latest',
's3ForcePathStyle' => true,
'region' => 'cn-north-1',
'endpoint' => $config['endpoint'],
'credentials' => [
'key' => $config['credentials.key'],
'secret'=> $config['credentials.secret']
],
]);
return $client;
}
}
Error: Class "Aws\S3\S3Client" not found in D:\htdocs\sh_bim\app\common\Minio.php:13<br />
Stack trace:<br />
#0 D:\htdocs\sh_bim\app\common\Minio.php(29): app\common\Minio->client()<br />
#1 D:\htdocs\sh_bim\app\controller\MinioossController.php(56): app\common\Minio->upload(Object(Webman\Http\UploadFile), 'build/2023/08/8...')<br />
#2 D:\htdocs\sh_bim\vendor\workerman\webman-framework\src\App.php(319): app\controller\MinioossController->save(Object(support\Request))<br />
#3 D:\htdocs\sh_bim\vendor\workerman\webman-framework\src\App.php(560): Webman\App::Webman\{closure}(Object(support\Request))<br />
#4 D:\htdocs\sh_bim\vendor\workerman\webman-framework\src\App.php(148): Webman\App::findRoute(Object(Workerman\Connection\TcpConnection), '/miniooss', 'POST/miniooss', Object(support\Request))<br />
#5 D:\htdocs\sh_bim\vendor\workerman\workerman\Connection\TcpConnection.php(646): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(support\Request))<br />
#6 D:\htdocs\sh_bim\vendor\workerman\workerman\Events\Select.php(311): Workerman\Connection\TcpConnection->baseRead(Resource id #263)<br />
#7 D:\htdocs\sh_bim\vendor\workerman\workerman\Worker.php(1479): Workerman\Events\Select->loop()<br />
#8 D:\htdocs\sh_bim\vendor\workerman\workerman\Worker.php(1399): Workerman\Worker::forkWorkersForWindows()<br />
#9 D:\htdocs\sh_bim\vendor\workerman\workerman\Worker.php(560): Workerman\Worker::forkWorkers()<br />
#10 D:\htdocs\sh_bim\vendor\workerman\webman-framework\src\support\App.php(131): Workerman\Worker::runAll()<br />
#11 D:\htdocs\sh_bim\start.php(4): support\App::run()<br />
#12 {main}
composer 安装完东西后要restart彻底重启才能生效
fpm 和 cli 是两种运行模式 ,他不是 之前那种 改完代码啥也不用管的 fpm模式了
能理解,但是这种情况需要从何入手去解决。毕竟大多数都正常,是需要cli的哪个没启动?还是少了什么库?有没大佬提供一下解决思路?
composer安装的不用手动require,先卸载,再clearcache清楚缓存,再composer安装,再重启webman
我在家建了一个空项目,也装了了AWS的SDK,发现和公司的依赖包不一样。
正在想,如果清除不了缓存,就把现有项目转到空项目上。
试了好几次,remove、update、cc,在require还是旧版本,旧sdk
问题出在哪基本找到了,只是解决不了
.json和.lock都是2.8的版本。但是在公司的composer的sdk包是不一样的。
在家里试验了sdk和老项目是一样的。
刚刚也尝试了卸载依赖,然后清除缓存,也确认了。但再composer还是那个不一样的包,很离奇。
缓存也没了为什么下的包和家里不一样。
现在可以替代的方法就是把家里下的sdk的空项目来替换。
公司环境又创建了个空项目,composer了sdk,是个正常的sdk。
出问题的这个项目各种方法都不能下正常的sdk。除了composer.json和composer.lock两个文件还有哪能影响?
镜像源地址是不是一样
再不行就手动
公司自己笔记本,同一个环境,出问题的项目和新的空项目同一个包名,下的版本和内容就不同...
很离奇,查遍了,找不到问题出在哪。
直接索性把正常的sdk目录复制了一遍,把正常的composer.json和composer.lock的依赖复制了一遍,然后一切就正常用了。
特意还update一下,看到:
这一行之后我就彻底放心了。
有没有大佬知道,这个
就是这个support\plugin应该记录了2.8的sdk,不论我怎么搞,都是下2.8的sdk。但着实找不到这个文件在哪
把vendor 删除 和 composer.lock 也删除 然后composer install 在清理一下composer的缓存 你会有惊喜 发现就能安装了
下次试试