我正在使用 Composer,但我尝试过的方法都不起作用。
我尝试要求作曲家自动加载。
require BASE_URL.'assets/vendor/autoload.php';
并使用命名空间
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
但我仍然收到错误消息
致命错误:在
中找不到类“PHPMailer\PHPMailer\PHPMailer”
这是我的简化课程
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/phpmailer/src/Exception.php';
require 'vendor/phpmailer/src/PHPMailer.php';
require 'vendor/phpmailer/src/SMTP.php';
class Email extends model{
public function enviarContato($nome, $email, $mensagem){
$mail = new PHPMailer(true);
}
}
我相信我导入错误,所以这是我的路径结构。
我正在使用 Email.php。
谢谢
BASE_URL 包含
http://192.168.1.240/project/
如果您向
require
提供 URL,整个调用都会通过 Web 服务器进行,因此您得到的是代码执行的结果而不是代码本身。您需要一个文件系统路径,例如:
require __DIR__ . '/path/to/autoload.php';
我发现了同样的错误,但在通过 PHPStorm 自动部署到 Linux 服务器之前,我已经从 DOS 命令行运行了
composer require phpmailer/phpmailer
install 命令来安装在我的 Windows 环境上 - 因此软件文件已部署,但调整后的 autoload_psr4.php 文件与此不符 - 所以这就是问题所在。
要修复此问题,我还必须在我的[自动部署] Linux 计算机上进行额外安装。
如果您不使用composer访问PHPMailer文件,您很可能会遇到此问题。要解决此问题,请打开文件
path-to-your-project/PHPMailer/src/PHPMailer.php
并禁用/删除具有
的行namespace PHPMailer\PHPMailer;
它应该位于类函数开始之前的顶部。在我的版本中
PHP Version 5.5.
位于第22行
祝你好运!