Laravel中laminas-diactoros依赖出现PHP语法错误(fn保留字)求助
解决PHP7.4下laminas-diactoros的fn语法错误问题
laminas-diactoros从2.17版本开始使用了PHP8.0支持的箭头函数(fn()),但PHP7.4中fn是保留字,无法作为函数名使用,因此出现语法错误。结合你使用Laravel 6.20.44的环境,以下是可行的解决办法:
方案1:指定安装兼容PHP7.4的版本
直接安装最后一批完全兼容PHP7.4的2.16.x系列版本,执行命令:
composer require laminas/laminas-diactoros:^2.16.0 --update-with-dependencies
--update-with-dependencies参数会同步更新相关依赖,避免出现版本冲突。
方案2:修改composer.json约束后更新
- 打开项目根目录的
composer.json,在require节点添加或修改版本约束:
"laminas/laminas-diactoros": "^2.16.0"
- 执行更新命令:
composer update laminas/laminas-diactoros
Composer会自动安装符合约束的最高兼容版本,避开使用箭头函数的2.17+版本。
方案3:临时修改报错文件(应急用)
如果暂时无法通过Composer更新,可手动修改报错文件:
打开/route/to/MyProject/vendor/laminas/laminas-diactoros/src/functions/marshal_headers_from_sapi.php,将第29行的箭头函数替换为普通匿名函数:
原代码示例:
$filter = fn($header) => strtolower($header);
替换为:
$filter = function($header) { return strtolower($header); };
注意:此方法会在执行composer install或composer update后被覆盖,仅作为临时应急方案,长期建议使用前两种版本锁定的方法。
内容的提问来源于stack exchange,提问作者Ruben Calvo
相关产品推荐
相关产品推荐

