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

生产服务器部署Composer安装的PHPMailer遇文件及类找不到错误求助

解决PHPMailer部署到生产服务器的常见问题

先来看你遇到的第一个错误:

[16-Jan-2018 08:36:33] PHP Warning: require_once(DIR/composer/autoload_real.php) [function.require-once]: failed to open stream: No such file or directory in /public_html/netWorks/emailtests/vendor/autoload.php on line 5

这个问题大概率是上传文件不完整导致的。你本地用Composer生成的vendor目录里,composer子文件夹下的autoload_real.php等核心文件没传到服务器上。给你几个修复步骤:

  • 先在本地重新执行composer install,确保所有依赖文件都生成完整
  • 用FTP或部署工具把整个vendor目录完整上传,别漏了composer子目录里的任何文件
  • 检查服务器上的文件权限,确保PHP能读取vendor目录下的文件(一般设置目录权限为755,文件权限为644即可)

升级PHP到5.6后出现的新错误:

[16-Jan-2018 09:23:03 America/Denver] PHP Fatal error: Class 'PHPMailer' not found in /public_html/netWorks/emailtests/index.php on line 4

这是因为新版PHPMailer使用了命名空间,你的代码里没有引入命名空间就直接实例化类,PHP找不到它。有两种简单的解决方法:

方法1:引入命名空间

在代码开头添加命名空间声明:

<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception; // 要使用异常类的话也需要引入

$mail = new PHPMailer(true);
// 后续代码保持不变...

方法2:使用完整命名空间路径实例化

如果不想单独引入命名空间,可以直接用完整路径实例化类:

<?php
require 'vendor/autoload.php';
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
// 后续代码保持不变...

最后再给你几个额外的排查建议:

  • 确认服务器上的PHP版本确实是5.6及以上(可以通过phpinfo()或php -v命令查看),PHPMailer 6.x版本要求PHP 5.5+,版本过低会有兼容问题
  • 检查本地的composer.json,确保require部分包含"phpmailer/phpmailer": "^6.0"之类的正确配置
  • 如果服务器支持执行Composer,建议直接在服务器上运行composer install,避免本地和服务器环境差异导致的文件缺失问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:22:20