Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从PHPMailer composer创建PHPMailer对象实例_Php_Composer Php_Phpmailer - Fatal编程技术网

Can';t从PHPMailer composer创建PHPMailer对象实例

Can';t从PHPMailer composer创建PHPMailer对象实例,php,composer-php,phpmailer,Php,Composer Php,Phpmailer,嗨,我目前正在从事一个项目,其中有一个忘记密码系统。我决定使用PHPMailer向用户发送重置密码电子邮件,我通过Composer安装了它,现在它位于供应商文件夹中。但是,在实现示例代码后,PHP会抛出一个错误: Notice: Undefined variable: mail in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php on line 98 Fatal error: Uncaught Error: Call t

嗨,我目前正在从事一个项目,其中有一个忘记密码系统。我决定使用PHPMailer向用户发送重置密码电子邮件,我通过Composer安装了它,现在它位于供应商文件夹中。但是,在实现示例代码后,PHP会抛出一个错误:

Notice: Undefined variable: mail in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php on line 98

Fatal error: Uncaught Error: Call to a member function isSMTP() on null in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php:98 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php on line 98
以下是我在loginFunctions.php中的部分代码:

<?php 
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\SMTP;
    use PHPMailer\PHPMailer\Exception;

    require __DIR__. '/../vendor/autoload.php';
    $mail = new PHPMailer();
    $mail->isSMTP();
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'ssl';
    // More codes ......
?>

我的目录结构是:

更新

  • 我试着搜索关于错误的常见堆栈溢出问题,甚至还浏览了youtube视频,但到目前为止没有成功!如果你能帮上忙,我将不胜感激

  • 感谢来自评论的帮助,但不幸的是,到目前为止没有运气

  • 我提供了一个imgur图像,显示调试后的屏幕截图
    $mail=new PHPMailer()发生:


  • 假设它是正确的
    供应商/autoload.php
    (请参阅内联注释):

    • 它读取的是
      new PHPMailer
      ,而不是
      new PHPMailer()
      ——与上面的代码片段不同

    • $mail
      看起来也很奇怪,而
      $mail
      是未知的。在
      $mail
      =
      之间可能有一些不可见的控件字符。如果它转储了一些东西,那么很可能
      var\u dump($mail)

    如果不是那样,那么

    • 试着跑步
    为了抛出/捕获异常,构造如下:

    <?php
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\SMTP;
        use PHPMailer\PHPMailer\Exception;
    
        // relative vs. absolute path sometimes make a difference.
        require __DIR__. '/../vendor/autoload.php';
        // require '../vendor/autoload.php';
    
        try {
            $mail = new PHPMailer(true);
            $mail->isSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
        } catch (Exception $e) {
            die($e->getMessage());
        }
    ?>
    
    
    
    @MartinZeitler对不起,我不明白你的意思。我只是跟踪了phpmailer的样本codes@Martin,那些
    use
    语句是正确的;它们是名称空间别名,而不是文件引用。您那里的代码看起来是正确的-如果您将其缩减为仅该代码,它是否有效?我怀疑您的
    loginFunctions.php
    文件中存在结构问题。@Synchro我尝试将其放入我的index.php中,但仍然没有发现相同的错误sadly@Synchro很明显,
    新的PHPMailer()
    并没有按预期构造。。。在构造函数中设置断点可以解释它为什么会这样做。另外,
    新的PHPMailer(true)
    启用异常。谢谢大家!我终于解决了它,它确实是一些特殊的隐形字符,所以我必须删除并重新键入代码!