Prestashop 赛前狂饮冲突
我正在更新一个模块,包括一个使用6.0的包 Prestashop 1.7使用了Guzzle 5的旧版本 当我在Prestashop上安装插件时,所包含的包的Guzzle版本与Prestashop版本冲突,导致以下错误 未捕获的PHP异常InvalidArgumentException:“魔法请求方法需要URI和可选选项数组”,位于/var/www/html/modules/package/vendorpackage/guzzlehttp/guzzle/src/Client.PHP第81行{“异常”:“[object](InvalidArgumentException(代码:0):Magic请求方法需要URI和可选选项数组,位于/var/www/html/modules/package/vendorpackage/guzzlehttp/guzzle/src/Client.php:81)“}[] 我还发现了其他一些类似问题的例子:Prestashop 赛前狂饮冲突,prestashop,guzzle,php,composer,composer-php,prestashop-1.7,Prestashop,Guzzle,Php,Composer,Composer Php,Prestashop 1.7,我正在更新一个模块,包括一个使用6.0的包 Prestashop 1.7使用了Guzzle 5的旧版本 当我在Prestashop上安装插件时,所包含的包的Guzzle版本与Prestashop版本冲突,导致以下错误 未捕获的PHP异常InvalidArgumentException:“魔法请求方法需要URI和可选选项数组”,位于/var/www/html/modules/package/vendorpackage/guzzlehttp/guzzle/src/Client.PHP第81行{“异常
- 从包含的软件包中删除Guzzle-这是最简单的一个,我的问题是,如果我删除此依赖项,它会在哪里停止,怎么说任何其他依赖项以后都不会冲突
- 可以在包中检查Guzzle的版本,并根据加载的调用交换调用-类似于上面的问题,我可以通过破解来确定我应该使用哪种类型的调用来解决此错误,但我无法判断这可能会引发什么其他问题,并且我的代码可能会在每个版本的语句中乱七八糟
- 手动更改插件中guzzle的名称空间。因此,我可以进入包的供应商文件夹,强制为包指定一个特定的名称空间,我猜这将解决我的问题,但我失去了安装可重用包的意义
- 叉口并参考该版本。我可以用叉子叉guzzle并将其作为VCS包包含在插件中。这里的问题是,我必须继续向前推进
- 将新的/更新的代码从本地安装复制到远程安装
- 从远程安装中删除所有过时的文件
记得在开始之前备份软件和数据库。最简单的方法是为guzzle选择一个替代软件包,但这可能并不适合您
- 专业人士
- 缺点
- 专业人士
- 缺点
- 专业人士
- 缺点
如果我必须大口喝,我会选择温和的方式。如果我只想在几行代码中做一些特殊的事情,我会使用另一个包。不您不能按composer安装同一软件包的不同版本。简短回答:您无能为力 长篇大论的回答:考虑到我也处于同样的情况,我找到了解决你问题的办法 如果您的模块依赖于一个依赖于Guzzle的包,并且该包在您的控制之下,那么您可以使用您的包。它是一个抽象,依赖于其他人,包括一个实际的HTTP客户端库。某人也可能是您,包括的不同实现 随着时间的推移,由于Prestashop可能也会使用这种方法(与其他平台一起),所有这些平台最终都可能依赖于 这并不是解决当前问题的真正方法,而是一种长期策略,这也有助于解决当前的问题。您可以在模块
composer.json
文件中使用“guzzlehttp/guzzle”:“~5.0”、
,然后使用与使用prestashop相同的版本。您有两种解决方案:
- 查找使用GuzzleHttp 5的软件包版本(如果可用)
- 找到你的包裹的替代品
- 要更改包中Guzzle的名称空间,请同时安装Guzzle 6。
(示例:
=>使用GuzzleHttp\
)'use GuzzleHttpSix\\