请不要使用阿里云composer镜像升级webman最新版本

近期很多开发者升级workerman和webman-framework后会出现错误

PHP Fatal error: 
Declaration of Webman\Http\Request::file($name = null) 
must be compatible with 
Workerman\Protocols\Http\Request::file(?string $name = null): 
mixed in 
/opt/www/vendor/workerman/webman-framework/src/Http/Request.php on line 119

大部分原因是使用了阿里云 composer 镜像导致,阿里云 composer 镜像在几年前就有问题了,它无法及时同步最新的 composer 包,导致更新的 webman-framework 是旧版本,最终导致以上报错。

解决方法

删除阿里云 composer 镜像代理,并指定版本,类似如下:

composer global config --unset repos.packagist
composer config --unset repos.packagist
composer require workerman/webman-framework ^1.6.6 -W

如果你的服务器无法连接 composer 官方源,可以尝试使用腾讯的 composer 代理

composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

Composer

Composer是PHP的一个依赖管理工具,可以自动化地管理PHP项目中的依赖关系,包括库、框架和其他第三方组件。通过Composer,开发者可以方便地在项目中引入和管理依赖,从而简化了项目的构建和维护过程。

底层原理

● Composer通过 Packagist 这个PHP包的仓库来管理和下载依赖包。开发者在 composer.json 文件中声明需要引用的依赖包及其版本号,Composer根据这些声明信息到Packagist仓库中搜索并下载对应的依赖包。

● Composer通过解析 composer.json 文件中的依赖关系,自动下载并安装依赖包及其依赖关系中的其他依赖包,将它们放置在指定的vendor目录下。

● Composer会生成一个 composer.lock 文件,用于记录当前项目依赖的所有包及其版本号。这个文件可以确保在后续安装或部署时,使用的依赖版本与当前版本一致。

当项目需要更新依赖包时,开发者只需修改 composer.json 文件中的版本号,并执行 composer update 命令,Composer会自动下载和安装更新的依赖包及其依赖关系。

转载作品,原作者:开源技术小栈,文章来源:https://mp.weixin.qq.com/s/oTH7fi_Lcupq8RvMsi69lw

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024-12-06 13:43
下一篇 2024-12-09 13:43

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部