@rina_marukova

PHPMailer. Почему выдаёт ошибку?

Хочу запустить PHPMailer на локалке.
Выдаёт ошибку:

Warning: require(/phpmailer/src/Exception.php): failed to open stream: No such file or directory in D:\OSPanel\domains\texst\send.php on line 6
Fatal error: require(): Failed opening required '/phpmailer/src/Exception.php' (include_path='.') in D:\OSPanel\domains\test\send.php on line 6

Вот php-код:

<?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    use PHPMailer\PHPMailer\SMTP;
    
    require '/phpmailer/src/Exception.php';
    require '/phpmailer/phpmailer/src/PHPMailer.php';
    require '/phpmailer/phpmailer/src/SMTP.php';

if(isset($_POST["send"])){
    $mail = new PHPMailer(true);

    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = '!!!!!!!@gmail.com';
    $mail->Password = '!!';
    $mail->SMTPSecure= 'ssl';
    $mail->Port = 465;

    $mail->setFrom('!!!!!@gmail.com');
    
    $mail->addAddress($_POST["email"]);

    $mail->isHTML(true);

    $mail->Subject = $_POST["subject"];
    $mail->Body = $_POST["message"];

    $mail->send();

    echo
    "
    <script>
    alert('Send Successfully')
    document.location.href = 'index.php';
    </script>
    ";
}   
?>


Я только учусь. Помогите, пожалуйста.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
В php есть константа __DIR__, которая содержит в себе путь к файлу, в котором она вызывается (только путь, без имени файла).
Если у вас примерно такая структура файлов

D:\OSPanel\domains\texst\
   phpmailer\
      файлы_майлера
   send.php


То вы можете так подключать

require __DIR__.'/phpmailer/src/Exception.php';

А вообще, по-хорошему, следует использовать автозагрузку
https://qna.habr.com/q/272575#answer_715210
Ответ написан
@iljaGolubev
php inclide (require)
Файлы включаются исходя из пути указанного файла, или, если путь не указан, используется путь, указанный в директиве include_path. Если файл не найден в include_path, include попытается проверить директорию, в которой находится текущий включающий скрипт и текущую рабочую директорию перед тем, как выдать ошибку.


А вообще, если других ошибок нет, то при
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require уже не нужно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 08:16
10000 руб./за проект
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект