Laravel 8.64搭配PHP 8.1发送邮件报strtolower空参数废弃错误求助
报错原因
该报错由PHP 8.1的类型校验规则收紧触发:旧版本SwiftMailer中存在未做空值判断就将参数传入strtolower()的逻辑,而SwiftMailer是Laravel 8邮件功能的内置依赖,属于laravel/framework的子依赖包,不需要在项目根目录的composer.json中显式声明,因此你会看到项目中已集成该组件但根composer.json没有对应条目。
解决方案
方案1(最优):显式声明兼容PHP 8.1的SwiftMailer版本
在项目根目录composer.json的require字段中添加以下配置:"swiftmailer/swiftmailer": "^6.3"保存后执行更新命令即可:
composer update swiftmailer/swiftmailerSwiftMailer从6.3.0版本开始已经修复了PHP 8.1下的空参数传值问题,更新后即可正常发送邮件。
方案2:升级Laravel 8到最新维护版本
Laravel官方在8.x的后续小版本中已经完成了PHP 8.1的兼容适配,执行以下命令即可升级框架:composer update laravel/framework升级前建议先备份composer.lock文件,避免其他业务依赖出现兼容性冲突。
方案3(临时应急,不推荐):屏蔽弃用警告
若暂时不方便修改依赖,可修改服务器php.ini配置文件,调整error_reporting参数去掉E_DEPRECATED项即可屏蔽该报错。该方案仅隐藏提示未解决根本问题,不建议长期使用。
内容的提问来源于stack exchange,提问作者nekiala
相关产品推荐
相关产品推荐

