Pear Mail «Не удается найти класс для драйвера smtp» Не удается найти файл, который есть

#php #linux #email #centos #pear

#php #linux #Адрес электронной почты #centos #pear

Вопрос:

Мой VPS работает под управлением CentOS 5.3. Я установил pear, Mail и Net_Mail. Когда я пытаюсь отправить почту, я получаю сообщение «Не удается найти класс для драйвера smtp». Я просмотрел Mail.php , обнаружил, что мне нужен ‘Mail/smtp.php — внутри моего каталога pear, который там есть. Я проверил каталог php include и сбросил все настройки в apache через chown. Я проверил chmod, и все они 644.

Мой код:

     $from = "Admin <admin@myemail.com>";
$to = "New User <".$email.">";
$subject = "Welcome to MyEmail!";
$body = "Thanks for choosing <MyEmail>! We strive to provide 24/7 email service and support. If you have ANY issues, concerns, etc, please reply to this email, or simply compose a new one to: myemail@email.com !";
$host = "localhost";
$username = "username";
$password = "password"; 
$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);
$smtp = Mail::factory('smtp',
    array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));
if (PEAR::isError($smtp)) {
    echo("<p>" . $smtp->getMessage() . "</p>");
}
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
} else {
    echo("<p>Message successfully sent!</p>");
}
  

Ответ №1:

Код, который вы дали, работает здесь, при добавлении require_once 'Mail.php'; в начале.

Какой хэш md5 имеет Mail/smtp.php файл на вашем сервере? Содержит ли он class Mail_smtp строку?

Вот оно: 479aa21ec86e63e629db646ed292b142 (через md5sum /usr/share/php/Mail/smtp.php )

Комментарии:

1. Я имею дело с этой же ошибкой. Я проверил, что у меня добавлена строка «класс Mail_smtp». Любая помощь?

Ответ №2:

Я запустил эту ту же проблему, пользователь apache не смог прочитать Mail/smtp.php файл и не смог загрузить драйвер.

Проверьте путь pear с помощью pear config-get php_dir

Перейдите в этот каталог и проверьте, есть ли Mail.php есть ли, проверьте, есть ли в подкаталоге Mail/ с smtp.php файл внутри.

Убедитесь, что пользователь apache или пользователь php могут читать эти файлы: su -s /bin/sh apache -c "ls -la /[pathtopear]/Mail"

В моем случае почтовые и сетевые каталоги были доступны для чтения только root