У меня ошибка phpmailer на странице оформления заказа WooCommerce

Вопрос или проблема

Я пытаюсь настроить WooCommerce и сталкиваюсь с ошибкой: “На этом сайте произошла критическая ошибка” во время оформления заказа. Я отключил все плагины и протестировал новую установку WordPress на поддомене, но проблема остается.

[25-Сен-2024 11:11:23 UTC] Фатальная ошибка PHP: Неперехваченная ошибка: Вызов неопределенной функции PHPMailer\PHPMailer\mail() в /home/bontonst/public_html/wp-includes/PHPMailer/PHPMailer.php:881
Стек вызовов:
#0 /home/bontonst/public_html/wp-includes/PHPMailer/PHPMailer.php(1972): PHPMailer\PHPMailer\PHPMailer->mailPassthru()
#1 /home/bontonst/public_html/wp-includes/PHPMailer/PHPMailer.php(1693): PHPMailer\PHPMailer\PHPMailer->mailSend()
#2 /home/bontonst/public_html/wp-includes/PHPMailer/PHPMailer.php(1525): PHPMailer\PHPMailer\PHPMailer->postSend()
#3 /home/bontonst/public_html/wp-includes/pluggable.php(546): PHPMailer\PHPMailer\PHPMailer->send()
#4 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/emails/class-wc-email.php(741): wp_mail()
#5 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/emails/class-wc-email-new-order.php(112): WC_Email->send()
#6 /home/bontonst/public_html/wp-includes/class-wp-hook.php(324): WC_Email_New_Order->trigger()
#7 /home/bontonst/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#8 /home/bontonst/public_html/wp-includes/plugin.php(565): WP_Hook->do_action()
#9 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/class-wc-emails.php(172): do_action_ref_array()
#10 /home/bontonst/public_html/wp-includes/class-wp-hook.php(324): WC_Emails::send_transactional_email()
#11 /home/bontonst/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#12 /home/bontonst/public_html/wp-includes/plugin.php(517): WP_Hook->do_action()
#13 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/class-wc-order.php(420): do_action()
#14 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/class-wc-order.php(253): WC_Order->status_transition()
#15 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/class-wc-order.php(365): WC_Order->save()
#16 /home/bontonst/public_html/wp-content/plugins/woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php(390): WC_Order->update_status()
#17 /home/bontonst/public_html/wp-content/plugins/woocommerce/src/StoreApi/Legacy.php(54): WC_Gateway_BACS->process_payment()
#18 /home/bontonst/public_html/wp-includes/class-wp-hook.php(324): Automattic\WooCommerce\StoreApi\Legacy->process_legacy_payment()
#19 /home/bontonst/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#20 /home/bontonst/public_html/wp-includes/plugin.php(565): WP_Hook->do_action()
#21 /home/bontonst/public_html/wp-content/plugins/woocommerce/src/StoreApi/Utilities/CheckoutTrait.php(83): do_action_ref_array()
#22 /home/bontonst/public_html/wp-content/plugins/woocommerce/src/StoreApi/Routes/V1/Checkout.php(349): Automattic\WooCommerce\StoreApi\Routes\V1\Checkout->process_payment()
#23 /home/bontonst/public_html/wp-content/plugins/woocommerce/src/StoreApi/Routes/V1/AbstractRoute.php(119): Automattic\WooCommerce\StoreApi\Routes\V1\Checkout->get_route_post_response()
#24 /home/bontonst/public_html/wp-content/plugins/woocommerce/src/StoreApi/Routes/V1/Checkout.php(138): Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute->get_response_by_request_method()
#25 /home/bontonst/public_html/wp-includes/rest-api/class-wp-rest-server.php(1230): Automattic\WooCommerce\StoreApi\Routes\V1\Checkout->get_response()
#26 /home/bontonst/public_html/wp-includes/rest-api/class-wp-rest-server.php(1063): WP_REST_Server->respond_to_request()
#27 /home/bontonst/public_html/wp-includes/rest-api/class-wp-rest-server.php(439): WP_REST_Server->dispatch()
#28 /home/bontonst/public_html/wp-includes/rest-api.php(420): WP_REST_Server->serve_request()
#29 /home/bontonst/public_html/wp-includes/class-wp-hook.php(324): rest_api_loaded()
#30 /home/bontonst/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#31 /home/bontonst/public_html/wp-includes/plugin.php(565): WP_Hook->do_action()
#32 /home/bontonst/public_html/wp-includes/class-wp.php(418): do_action_ref_array()
#33 /home/bontonst/public_html/wp-includes/class-wp.php(813): WP->parse_request()
#34 /home/bontonst/public_html/wp-includes/functions.php(1336): WP->main()
#35 /home/bontonst/public_html/wp-blog-header.php(16): wp()
#36 /home/bontonst/public_html/index.php(17): require('/home/bontonst/...')
#37 {main}
  выброшено в /home/bontonst/public_html/wp-includes/PHPMailer/PHPMailer.php на строке 881

Ответ или решение

Когда вы видите ошибку "There has been a critical error on this website" при оформлении заказа в WooCommerce, и журнал ошибок указывает на проблему с библиотекой PHPMailer, как в вашем случае, есть несколько шагов по устранению неполадок, которые могут помочь решить проблему.

  1. Проверка конфигурации PHP:
    Убедитесь, что ваша версия PHP совместима с WooCommerce. Рекомендуется использовать PHP версии 7.4 или выше, так как более ранние версии могут иметь несовместимости.

  2. Проверка функции mail:
    Ошибка Call to undefined function PHPMailer\PHPMailer\mail() указывает на то, что функция mail в PHP недоступна. Это может происходить по двум причинам:

    • Функция mail() отключена в конфигурации вашего PHP (проверьте файл php.ini на наличие строки disable_functions).
    • На вашем хостинге могут быть ограничения или настройки, препятствующие использованию функции mail().

    Чтобы проверить это, вы можете создать файл info.php с содержимым:

    <?php
    phpinfo();
    ?>

    Откройте этот файл в браузере и найдите секцию disable_functions, чтобы убедиться, что mail() не указана там.

  3. Тестирование отправки почты:
    Для проверки отправки электронной почты вы можете использовать плагин, такой как "WP Mail SMTP", который позволяет настроить SMTP-сервер для отправки писем. Установите плагин и следуйте его инструкциям, чтобы настроить SMTP с использованием вашего email-провайдера. Это может помочь установить, является ли проблема связанной с функцией mail().

  4. Логи ошибок:
    Продолжайте проверять журнал ошибок сервера на наличие других ошибок, которые могут дать дополнительные подсказки. Иногда другие проблемы могут проявляться параллельно.

  5. Тестирование на минимальной конфигурации:
    Поскольку вы уже отключили все плагины, попробуйте сменить тему сайта на стандартную (например, Twenty Twenty-One или другую базовую тему WordPress). Это может помочь выяснить, является ли проблема связанной с темой.

  6. Обновление плагинов и тем:
    Убедитесь, что все ваши плагины и темы обновлены до последней версии, так как устаревшие версии могут вызывать конфликты.

  7. Обращение к хостингу:
    Если все вышеперечисленные шаги не решают проблему, стоит обратиться к вашему хостинг-провайдеру. Иногда проблемы связаны с конфигурацией сервера или ограничениями, установленными вашим хостингом.

  8. Разработка предыдущих резервных копий:
    В качестве последнего курсового механизма, если ничего не помогло, подумайте о восстановлении сайта из резервной копии до момента появления ошибки, пока вы не найдете конечное решение.

Следуйте указанным шагам, и это должно помочь вам устранить ошибку с PHPMailer и восстановить функционирование оформления заказа в WooCommerce. Если проблема не решается, возможно, вам стоит рассмотреть возможность получения помощи у профессионала или в сообществе WordPress.

Оцените материал
Добавить комментарий

Капча загружается...