问题描述 投票:0回答:3

我正在使用 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); 
}
}

我相信我导入错误,所以这是我的路径结构。

img

img

我正在使用 Email.php。

谢谢

php composer-php phpmailer require
3个回答
4
投票

BASE_URL 包含

http://192.168.1.240/project/

如果您向

require
提供 URL,整个调用都会通过 Web 服务器进行,因此您得到的是代码执行的结果而不是代码本身。您需要一个文件系统路径,例如:

require __DIR__ . '/path/to/autoload.php';

0
投票

我发现了同样的错误,但在通过 PHPStorm 自动部署到 Linux 服务器之前,我已经从 DOS 命令行运行了

composer require phpmailer/phpmailer
install 命令来安装在我的 Windows 环境上 - 因此软件文件已部署,但调整后的 autoload_psr4.php 文件与此不符 - 所以这就是问题所在。

要修复此问题,我还必须在我的[自动部署] Linux 计算机上进行额外安装。


0
投票

如果您不使用composer访问PHPMailer文件,您很可能会遇到此问题。要解决此问题,请打开文件

path-to-your-project/PHPMailer/src/PHPMailer.php

并禁用/删除具有

的行
namespace PHPMailer\PHPMailer;

它应该位于类函数开始之前的顶部。在我的版本中

PHP Version 5.5.
位于第22行

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.