PHPMailer的问题:require:必须打开失败

问题描述

我在设置PHPMailer时遇到问题。它以前一直在工作,但是现在突然停止了,这是我得到的错误PHP Fatal error: require(): Failed opening required '../src/PHPMailer.PHP' (include_path='.:/opt/cpanel/ea-PHP53/root/usr/share/pear:/opt/cpanel/ea-PHP53/root/usr/share/PHP') in /home/pandatra/site.com/contacts_form/contact_form.PHP on line 9

这是contact_form.PHP中的代码

<?PHP

    include 'config.PHP';

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    use PHPMailer\PHPMailer\SMTP;

    require ''.$d['include_path'].'PHPMailer/src/Exception.PHP';
    require ''.$d['include_path'].'PHPMailer/src/PHPMailer.PHP';
    require ''.$d['include_path'].'PHPMailer/src/SMTP.PHP';
    
    $mail = new PHPMailer(true);

  if (isset($_POST['Send'])) {

如何解决此问题?有任何想法吗?我下载了PHPMailer的6.1.7版本。

解决方法

您提到的错误是,您需求中的路径变得错误。为避免此类问题,您应始终使用绝对路径

例如

    require __DIR__.'/PHPMailer/src/Exception.php';
    require __DIR__.'/PHPMailer/src/PHPMailer.php';
    require __DIR__.'/PHPMailer/src/SMTP.php';

   # use "use" after include or require

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    use PHPMailer\PHPMailer\SMTP;

__ DIR __ 是运行文件目录的绝对路径。

,

问题出在这里

我只是用新版本替换了旧版本

如果从5.x升级到6.x,则需要阅读专门为解决此问题而创建的the readmethe upgrade guidethis question and answer