Laravel 6升级7报错:functions.php第34行出现意外=符号解析错误
报错指向的第34行代码$string ??= '';使用了空合并赋值运算符,该语法仅在PHP 7.4.0及以上版本中支持。你当前运行项目(含执行composer命令、启动web服务)的PHP版本低于7.4,同时composer配置未锁定symfony组件版本,拉取到了要求高版本PHP的symfony/string包,最终触发解析错误。
你当前composer.json中设置了"minimum-stability": "dev",且仅约束了laravel/framework版本为^7.0,没有对symfony底层依赖做版本限制,是导致composer拉取不兼容版本包的直接诱因。
先核对全环境PHP版本
执行命令查看命令行端的PHP版本:php -v同时确认web服务(Apache/Nginx)当前运行的PHP版本。
注意:Windows环境下WAMP/XAMPP等集成环境经常存在多PHP版本共存问题,常见场景是web服务配置了PHP7.4,但系统环境变量优先加载了低版本PHP7.2/7.3,导致composer安装依赖、运行artisan命令时使用低版本PHP解析代码,触发报错。
方案一(推荐):升级PHP版本
将运行环境的PHP版本升级到7.4及以上(Laravel 7原生兼容PHP7.4,后续框架升级也更顺畅),升级完成后删除项目下的vendor目录和composer.lock文件,重新执行composer install安装依赖即可。方案二(暂不升级PHP时使用):锁定兼容的symfony/string版本
symfony/string 5.0.x系列版本兼容PHP7.2.5及以上,未使用PHP7.4专属语法。打开composer.json,在require块中添加一行配置:"symfony/string": "5.0.*"保存后执行命令更新依赖:
composer update symfony/string --with-all-dependencies额外异常排查
如果你确认当前PHP版本已经≥7.4仍出现报错,检查composer的平台配置是否被错误锁定为低版本,执行命令查看配置:composer config platform.php如果输出的版本号低于7.4,执行命令修正为你实际使用的PHP版本(示例为7.4.33,替换为你本地实际版本号即可):
composer config platform.php 7.4.33配置完成后重新安装依赖即可。
内容的提问来源于stack exchange,提问作者user12000870

