Сохраните следующее как send.php, его можно выполнить с php -f send.php
или 127.0.0.1/send.php
, без вывода информации об ошибке.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require_once('/home/debian9/vendor/autoload.php');
$mail = new PHPMailer();
?>
Операторы use импортируют класс PHPMailer с пространством имен в глобальныйscope, поэтому не нужно использовать FQCN (полное имя класса), например $mail = new PHPMailer\PHPMailer\PHPMailer();
, достаточно просто $mail = new PHPMailer();
.
Откройте php-оболочку с помощью php -a.
php > use PHPMailer\PHPMailer\PHPMailer;
php > use PHPMailer\PHPMailer\Exception;
php > require '/home/debian9/vendor/autoload.php';
php > $mail = new PHPMailer(true);
PHP Warning: Uncaught Error: Class 'PHPMailer' not found in php shell code:1
Stack trace:
#0 {main}
thrown in php shell code on line 1
Почему $mail = new PHPMailer(true);
не может импортировать класс PHPMailer с пространством имен в глобальную область видимости в оболочке php?
Вы должны написать $mail = new PHPMailer\PHPMailer\PHPMailer();
в оболочке php.