You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel9表单提交报错:$port需?int类型却传入string

问题分析与解决方案

错误根源

你遇到的TypeError和提供的FormController代码完全无关,问题出在生产环境的邮件配置上:
错误提示明确指出,Symfony Mailer的Dsn构造函数要求端口参数是可空整数类型,但生产环境传入的是字符串。本地正常是因为本地的SMTP端口配置是整数,而生产环境的端口被解析成了字符串。

排查修复步骤

  • 检查.env文件:打开生产环境的.env,确认MAIL_PORT是纯数字,不要加引号。比如正确写法是MAIL_PORT=587,错误写法是MAIL_PORT="587"(带引号会被解析成字符串)。
  • 检查config/mail.php:如果直接在配置文件里写死了端口,确保它是整数类型,比如'port' => env('MAIL_PORT', 587),不要转成字符串。
  • 清除配置缓存:生产环境改完配置后,必须执行以下命令刷新缓存:
    php artisan config:clear
    php artisan config:cache
    

为什么你的代码没问题

FormController只是调用Laravel的Mail类发送邮件,没有修改邮件传输的底层配置逻辑,所以不可能触发这个类型错误。核心问题就是生产环境的SMTP端口配置类型不匹配,导致Symfony Mailer无法正确处理。

内容的提问来源于stack exchange,提问作者Matthew Fuller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:35:16