Отладка Woocommerce webhook на nginx в контейнере docker

#wordpress #nginx #docker #woocommerce #docker-compose

#wordpress #nginx #docker #woocommerce #docker-compose

Вопрос:

Я только что перенес магазин woocommerce с обычного общего хостинга на установку с контейнерами docker и docker-compose. На самом деле он работает на nginx и пока работает нормально. Единственное, что перестало работать, это webhooks.

Если я зайду в настройки webhooks и настрою, например, заказ полного подключения и сохраню эти настройки, URL-адрес будет вызван без каких-либо проблем, и я смогу увидеть тестовый вызов из сохранения webhook. Но когда я на самом деле выполняю заказ (да, я также пробовал это с множеством других перехватов), просто ничего не происходит. У меня отладка и регистрация ошибок имеют значение true, и я все еще не вижу никаких ошибок. Также в журналах ошибок сервера ошибок нет.

Нужны ли мне какие-то специальные настройки или службы для правильной работы веб-крючков с nginx? У вас есть краткое представление о том, как я могу отладить эту проблему здесь, если я не получаю ошибок с debug true и регистрирую все ошибки? Или, может быть, есть какие-либо проблемы с правами доступа к файлам? (уже установлены 644 и 755 правильно)

Технические характеристики:

  • WordPress 4.6.1
  • Woocommerce 2.6.4
  • nginx 1.11.4
  • PHP 7.0.11
  • cUrl 7.38.0, OpenSSL/1.0.1t
  • MySQL 5.7.15
  • Docker 1.12.1
  • Docker Compose 1.8.0

Ответ №1:

Требуется ли в вашем try_files разделе конфигурации Nginx для удаления строк запроса из index.php? корзины строк запроса.

Если у вас есть строка, подобная:

 location / {
  try_files $uri $uri/ /index.php;
}
  

Попробуйте:

 location / {
  try_files $uri $uri/ /index.php?$args;
}
  

Перезапустите Nginx после подобного изменения.

И, чтобы удалить все действия и фильтры, проверьте https://gist.github.com/studiograsshopper/1273784

Используйте этот functions.php файл темы.

 add_action( 'all', create_function( '', 'var_dump( current_filter() );' ) );
  

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

1. спасибо за быстрый ответ. Да, действительно, я уже делал это, и в моем конфигурационном файле есть именно второй пример. Нет ли способа отладить эти устаревшие веб-хуки?

2. Добавлена функция для тестирования, хотя я никогда не использовал ее сам.

3. Еще раз спасибо @markratledge. Я провел немного более углубленное исследование с помощью xDebug, и теперь я приближаюсь к решению. Основная проблема заключается в этой функции wp_schedule_single_event( time(), ‘woocommerce_deliver_webhook_async’, array( $this-> id, $arg ) ); Она пытается запланировать доставку веб-хуков, но она никогда не доставляет ее. На самом деле я не совсем уверен, почему он не запускает функцию доставки. Если я вызываю это прямо там (так что $this-> deliver( $ arg );), это работает отлично, и это вызывает webhook, как и должно быть. Может ли это быть проблемой с CRON и nginx там?

4. Не знаю; Я бы посмотрел на developer.wordpress.org/reference/functions /… и убедитесь, что у вас есть необходимые параметры в этой функции, чтобы она работала, а затем посмотрите, остались ли проблемы с cron.