modPHPMailer ложит сервер на ломатки 500
из терминала, ОК:
echo -e "To: tut@domena.net\\nSubject: Test\\nTest\\n" | sendmail -bm -t -v
отрывок функции снипета, ОК:$headers = "Content-type: text/html; charset=utf-8 \r\n";
if ( $data[email] ) {
$headers .= "From: ".$data[name]." <".$data[email].">\r\n";
$headers .= "Bcc: ".$data[email]."\r\n";
} else {
$headers .= "From: ".$data[phone].">\r\n";
}
if ( mail($data['to'], $data['subject'], $data['tpl'], $headers) ) {
$fn_answer = 'письмо отправленно успешно';
} else {
$fn_answer = 'ошибка отправки письма';
}
return $fn_answer;
НО стоит запустить modPHPMailer в снипете, серверу больше нечего отдать кроме 500. к томуже если запустить modPHPMailer из Console все оправляется и работает.
в логах modx пусто, в логах сервера:
[error] 20478#20478: *7 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to a member function getService() on null in
пожскажите пожалуйста у кого какие мысли и идеи, как это решить.
modx_2.7.0
-= РЕШЕНИЕ ( от Андрей Шевченко ) =-
Инициализировать модекс в снипете
Комментарии: 9
Ошибку 500 всегда нужно смотреть в логах сервера
[error] 20478#20478: *7 FastCGI sent in stderr: «PHP message: PHP Fatal error: Uncaught Error: Call to a member function getService() on null in
далее указывался снипет и строка где вызывался modPHPMailer
далее указывался снипет и строка где вызывался modPHPMailer
Похоже на то.
Дальше нужно смотреть «снипет и строка где вызывался modPHPMailer» и проверять, почему он вызывает почтовик из пустоты.
Дальше нужно смотреть «снипет и строка где вызывался modPHPMailer» и проверять, почему он вызывает почтовик из пустоты.
спасибо Василий, что поддерживаете. у Вас наверное и так времени в обрез.
в снипете была оставлена, ради експеримента, только эта строка:
в снипете была оставлена, ради експеримента, только эта строка:
$modx->getService('mail', 'mail.modPHPMailer');
серверу хватило )), вспомнил что даже простым php из снипета почта не отправлялась, но и ошибок не было.
Теперь осталось понять, почему $modx в сниппете является null.
Можете попробовать вот такую конструкцию, я ее обычно использую в кастомном файле отправки писем для инициализации $modx
require_once $_SERVER["DOCUMENT_ROOT"].'/config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
Огромное спасибо, действительно помогло.
Интересно, а зачем нужно было инициализировать модекс если по идее он это делает автоматом (возможно ошибаюсь) и почему сейчас, так как это скрипт работал и ранее, без доп. инициализации… странности да и только ))
Большое спасибо за участие и помощь!
Интересно, а зачем нужно было инициализировать модекс если по идее он это делает автоматом (возможно ошибаюсь) и почему сейчас, так как это скрипт работал и ранее, без доп. инициализации… странности да и только ))
Большое спасибо за участие и помощь!
По-идее, должен инициализировать автоматом, а после чего у вас сломался скрипт?
Уже и не вспомню. Сам по себе скрипт это свич для ответов на ажакс запросы. Единственная глобальная функция это та самая для отправки почты. Уже и не известно после чего он перестал работать.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.