Пожалуйста, простите мое невежество. Я пытаюсь установить PHPMailer 6.0.1 под PHP 5.6 на Linux. Моя установка PHP удалена, и я управляю всеми PHP-серверами своих сайтов через FTP (я обычно загружаю пакеты как .zips в Win 10, распаковываю, а затем FTP-результат в мое веб-пространство).
Из различных способов установки PHPMailer предпочтительнее использовать Composer, но именно здесь я отклеиваюсь. Ни один из инструкций Composer не подходит для этого способа работы – установщик хочет, чтобы я был в «Выбор командной строки PHP, который вы хотите использовать», но у меня нет PHP локально … Раздражающе, я вижу композитор PHPMailer's composer.json установленный файл, ожидающий использования. Но нет PHPMailerAutoload.php (это создано Composer?)
Поэтому я пытаюсь выполнить ручную установку PHPMailer. Я загружаю, распаковываю и загружаю файлы FTP в мои веб-пространства в папке PHPMailer. Затем я вставляю следующее во главе моего PHP-кода и вне любых функций:
require_once 'PHPMailer/src/PHPMailer.php'; require_once 'PHPMailer/src/SMTP.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception;
С помощью «использования» я получаю синтаксическую ошибку неожиданное «использование» (T_USE) … Без них я добираюсь до попытки создания экземпляра: $ mail = new PHPMailer; но это терпит неудачу с «class» PHPMailer »не найден
Что, пожалуйста, я делаю неправильно, и как я могу сделать лучше?
Это не относится к PHPMailer – это просто то, что вам нужно для решения любого из множества пакетов PHP, использующих пространства имен. Документы PHP о том, как использовать use
приведены здесь .
Короче говоря, вам нужно поставить namespace
и use
директивы перед любыми другими сценариями, поэтому, если вы просто измените порядок своих команд, он должен работать:
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require_once 'PHPMailer/src/PHPMailer.php'; require_once 'PHPMailer/src/SMTP.php';
Кстати, это пример, используемый приложением в readme и во всех других примерах, предоставляемых PHPMailer. Вы также можете найти руководство по обновлению .
Файл PHPMailerAutoload.php
больше не существует – автозагрузчик композитора выполняет гораздо лучшую работу. Собственный файл composer.json
PHPMailer используется для разрешения зависимостей и требований совместимости флагов для собственного композиционного файла вашего приложения, то есть он используется, чтобы сообщить файлу-композитору вашего проекта, как использовать PHPMailer, – но это не сам файл композитора вашего проекта – каждый пакет, который вы загрузка будет иметь свои собственные.
Разработка без локального экземпляра PHP – это тяжелая работа – разработка на вашем живом сервере, скажем так, «обескуражена»! Если вы не можете установить PHP напрямую, запустите его в виртуальной машине с помощью VirtualBox или что-то вроде XAMPP, полностью автономного.
Измените требуемый запрос и попробуйте установить как вики PHPMailer:
<?php require 'PHPMailerAutoload.php'; $mail = new PHPMailer;
Ссылка на wiki
In version 6.02, each of the phpmailer modueles contain the namespace `PHPMailer\PHPMailer` declaration so the following works (no autoloader needed but this routine should be in `/src` folder): include($_SERVER['DOCUMENT_ROOT'].'/path_setup.php'); require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/PHPMailer.php'); require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/SMTP.php'); require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/Exception.php'); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; $mail = new PHPMailer(true);