laravel 如何修复接口'Psr\Http\Client\ClientInterface'没有找到互联网连接?

fdbelqdn  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(434)

以前的开发人员似乎搞砸了 composer ,现在在我运行composer dump-autoload之后应用程序坏了。
这是一个无法访问互联网的旧版内部应用程序,因此我无法将文件复制到其中。
现在我得到了以下错误:
在C:\项目\供应商\guzzlehttp\guzzle\src\Client.php中未找到接口“Psr\Http\客户端\客户端接口”
我所知道的是,所有正确的文件确实存在,这个包确实工作,因为每当我复制备份供应商文件夹它再次工作。
composer.jsonrequire密钥中也有"guzzlehttp/guzzle: "^7.2"
虽然当我运行composer dump-autoload时,它没有在Discovered packages列表中显示guzzlehttp(但我不确定它是否应该显示它?如果是,那么它可能与问题有关)
没有互联网连接,如何手动修复?
这是纯粹的composer相关的错误,我可以尝试通过编辑vendor/composer文件夹中的文件来修复它吗?或者我还需要添加一些代码到Laravel项目本身,也许在配置文件中的某个地方?

更新1:我使用git比较了使用composer dump-autoload前后的vendor文件夹,发现composer中的所有文件都发生了变化,除此之外没有其他变化。

然后我注意到可能导致这个问题的有问题的行:
composer/autoload_classmap.phpcomposer/autoload_static.php中,缺少的'Psr\Http\Client\ClientInterface'都消失了。
在运行自动加载之前,autoload_classmap.php中有以下行:

'Psr\\Http\\Client\\ClientInterface' => $vendorDir . '/psr/http-client/src/ClientInterface.php'`

这个是autoload_static.php的:

'Psr\\Http\\Client\\ClientInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientInterface.php'`

当我将psr/http-client添加到composer.json的require中时,它没有做任何事情

更新2:手动将缺少的两行添加到autoload_static.phpautoload_classmap.php后,软件包正在添加。

那么为什么composer dump-autoload一开始就把它们删除了呢?我把psr/http-client加到composer.json上了。或者可能这还不够,我需要添加另一个包?

更新3:是否与composer版本有关?我知道所有内容都是使用composer 1.x安装的,而我使用composer 2.4运行了composer dump-autoload命令

2cmtqfgy

2cmtqfgy1#

1.将应用程序置于版本控制之下,* 包括 * 供应商文件夹(以其工作的形式)。
1.在一个可以上网的盒子上 checkout 那个修订版。
1.修复项目。
1.测试更改并确认它们适用于目标平台。
1.使用更改创建新的项目修订。
1.在新修订版本之外创建一个工件。
1.在无法访问Internet的删除系统上部署对象。
1.测试更改并确认它们在生产系统上工作。

相关问题