предложения по устранению неполадок для реализации PHPMailer на AWSasticbeanstalk - PullRequest
0 голосов
/ 01 апреля 2020

Развертывание фрагмента кода на AWSasticbeanstalk, где пользователю отправляется подтверждение по электронной почте для создания учетной записи. Я проверил код электронной почты, и он работает на моей локальной машине. Чтобы проверить это на сервере, я написал этот контрольный пример, и он работает. Но когда он вызывается модулем, который должен его использовать, он ломается. Мне нужна помощь с устранением неполадок.

Поскольку один и тот же модуль вызывается двумя разными модулями (test и prod) и он работает с test, я склонен думать, что он связан с вызывающим модулем, но помимо формата оператора include Я не вижу, как это сломалось бы.

Рабочий код испытания:

enter image description here

Результаты испытаний:

enter image description here Ошибка :

[Wed Apr 01 16:45:53.262139 2020] [php7:notice] [pid 10670] [client 136.55.180.140:29275] Array\n(\n    [count] => 1\n)\n, referer: http://bluetooth-env-test.eba-brqgvwur.us-east-2.elasticbeanstalk.com/WebApp/new_user.php
[Wed Apr 01 16:47:40.599465 2020] [php7:warn] [pid 10669] [client 136.55.180.140:29293] PHP Warning:  require_once(../PHPMailer/PHPMailer.php): failed to open stream: No such file or directory in /var/app/current/WebApp/utils/emailVerification.php on line 13, referer: http://bluetooth-env-test.eba-brqgvwur.us-east-2.elasticbeanstalk.com/WebApp/new_user.php
[Wed Apr 01 16:47:40.599502 2020] [php7:error] [pid 10669] [client 136.55.180.140:29293] PHP Fatal error:  require_once(): Failed opening required '../PHPMailer/PHPMailer.php' (include_path='.:/usr/share/pear7:/usr/share/php') in /var/app/current/WebApp/utils/emailVerification.php on line 13, referer: http://bluetooth-env-test.eba-brqgvwur.us-east-2.elasticbeanstalk.com/WebApp/new_user.php

исходный код для общего модуля: он разрывается в require_once ('../ PHPMailer / PHPMailer. php');

<?php

// session_start();

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

function emailVerify($email, $hash){



require_once('../PHPMailer/PHPMailer.php');
require_once('../PHPMailer/SMTP.php');
require_once('../PHPMailer/Exception.php');


echo (extension_loaded('openssl')?'SSL loaded':'SSL not loaded')."\n";

$mail = new PHPMailer(true);

try{
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->SMTPOptions = array(
                  'ssl' => array(
                      'verify_peer' => false,
                      'verify_peer_name' => false,
                      'allow_self_signed' => true
                  )
              );
$mail->isSMTP();
$mail->Host = gethostbyname('smtp.gmail.com');
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->Username = "bluetooth.project.test@gmail.com";
$mail->Password = "BLANKED_OUT_FOR_STACKOVERFLOW";
$mail->Subject = "Account Verification";
$mail->setFrom("bluetooth.project.test@gmail.com");
$mail->Body = ($_SESSION['root']."/utils/verify?key=".$hash."&email=".$email);
$mail->addAddress($email);

if ($mail->Send()){
    echo "success";
}else{
    echo "failure\n";
    // print_r($mail);
}

$mail->smtpClose();
}catch (phpmailerException $e) {
    $errors[] = $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
    $errors[] = $e->getMessage(); //Boring error messages from anything else!
}


}


?>

Часть модуля new_user который вызывает файл emailVerification:

<?php
session_start();
include "./utils/bootstrap.php";
include "./utils/connection.php";
include "./utils/emailVerification.php";
// include "navbar.php";
// include "utils/bootstrap_js.php";


  //If insert if successful

if(isset($_POST['cancel'])){
  header("location: index.php");
  return;
}

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


  $sql="insert into users( fname, lname, email, password,role, hash)
  values (:fname,:lname,:email,:password,:role, :hash)";


  $salt = "XyZzy12*_";
  $check = hash('md5', $salt.$_POST['pass1']);
  $email = $_POST['email'];
  $role = checkRole($email, $pdo);
  $hash = md5( rand(0,1000) );

  if($role == "invalid"){

    header("location: ./new_user.php");
    return;
  }

  emailVerify($email, $hash);


  $statement = $pdo->prepare($sql);
  $statement->execute(
    array(
      ':fname'=> $_POST['firstName'],
       ':lname'=> $_POST['lastName'],
       ':email'=>$email,
       ':password'=>$check, 
       ':role'=>$role,
       ':hash'=>$hash
    )
  );

  $_SESSION['insert'] = "New User Successfully Created - Please verify by Email";

  header("location: new_user.php");
  return;

}
function checkRole($email, $pdo){
return "student";
}
}
...