近期很多开发者升级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