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

如何在Laravel项目中找到php.ini文件解决SMTP邮件发送报错问题

报错原因

mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

这个报错是PHP原生mail()函数调用时,检测到本地25端口没有运行可用的SMTP邮件服务导致,绝大多数本地开发环境默认不会预装SMTP服务,因此会触发该错误。

解决方案

方案1:使用Laravel内置邮件功能(推荐,无需修改php.ini)

Laravel本身封装了完善的邮件发送体系,不需要调用原生mail()函数,仅需修改根目录下的.env配置文件即可:

  • 本地开发测试场景:建议直接使用log驱动,所有发出的邮件会自动写入storage/logs目录的日志文件中,无需搭建SMTP服务,配置参考:
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="test@example.com"
MAIL_FROM_NAME="${APP_NAME}"
  • 线上真实发信场景:直接填入第三方邮件服务商提供的SMTP配置即可,比如QQ邮箱、163邮箱、企业邮的SMTP地址、端口、授权码等参数。

方案2:查找并修改php.ini配置

如果确实需要使用原生mail()函数,可按以下方式找到当前环境生效的php.ini文件:

集成环境(XAMPP/WAMP/MAMP)

  • XAMPP:打开XAMPP控制面板,点击Apache模块对应的「Config」按钮,直接选择PHP(php.ini)即可打开配置文件
  • WAMP:点击右下角系统托盘的WAMP图标,展开PHP菜单,直接点击php.ini即可打开
  • MAMP:打开MAMP偏好设置,切换到PHP标签页,即可看到当前php.ini的存放路径

自定义环境/服务器环境

  • 在项目public目录下新建phpinfo.php文件,写入内容:<?php phpinfo(); ?>
  • 浏览器访问该文件(地址如http://本地项目域名/phpinfo.php),在页面中搜索Loaded Configuration File字段,后方的路径就是当前生效的php.ini绝对路径
  • 修改完配置后记得删除phpinfo.php文件,避免泄露环境敏感信息

注意事项

  • 修改php.ini配置后,需要重启对应的Web服务(Apache/Nginx/php-fpm)才会生效
  • 若本地没有搭建SMTP服务,仅修改php.ini的SMTP配置仍然会触发报错,优先推荐使用Laravel内置邮件功能处理发信需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:05