Как заставить $ base_url в Drupal работать на работе cron? - PullRequest
5 голосов
/ 22 октября 2010

Как заставить $ base_url показывать правильный URL для моего сайта на Drupal, когда я запускаю задание cron?Нужно ли устанавливать глобальный $ base_url вручную, чтобы это произошло?Нужно ли запускать задание cron как зарегистрированный пользователь?

Когда я запускаю mysite.com/cron.php вручную, кажется, что все работает нормально: $ base_url имеет правильный URL-адрес.Тем не менее, когда я запускаю аналогичную команду через cron или drush, $ base_url имеет значение "http://default".

"), $ base_url всегда указывает на правильный URL.

Есть предложения?

Заранее спасибо,

Лев

Ответы [ 2 ]

6 голосов
/ 01 ноября 2010

Ваш cron, вероятно, настроен неправильно.

Вы можете использовать wget или curl, что практически равнозначно запуску cron «вручную». Примерно так:

5 * * * * wget http://example.com/cron.php

Вы, вероятно, используете drupal.sh, который утверждает, что вы должны использовать "http://default/cron.php в качестве URI". Это нарушит обработку $ base_url. Следующие могут работать с drupal.sh.

5 * * * * /path/to/drupal.sh --root /home/site/public_html/ http://example.com/cron.php

При использовании drush может потребоваться указать аргумент --uri:

drush --uri=http://example.com cron

Вы также можете просто установить переменную $ base_url в settings.php (это совершенно правильный способ сделать это, а не взлом).

0 голосов
/ 22 октября 2010

Давайте рассмотрим несколько возможных причин:

  • wget, curl или lynx не существуют на сервере.Попробуйте выполнить эти команды вручную, ваша ОС сообщит вам, если программы недоступны.Решение: сделайте их доступными, установите их или попросите системного администратора сделать их доступными или установить их.
  • wget, curl и им подобные не могут подключиться к внешнему миру.Вызовите всю команду cron вручную, но _ убедитесь, что вы пропустили параметры --silent или --quit, вы хотите получить подробную информацию.Хороший шанс, что межсетевой экран блокирует ваше соединение изнутри наружу.Многие хорошо защищенные системы делают.Решение: Свяжитесь с вашим системным администратором, чтобы отключить брандмауэр.
  • Никто не может подключиться или запустить ваш cron.php.Вы уже отметили, что это не так, но для дальнейшего использования: многие серверы заблокировали cron.php для запуска «просто кем угодно».Вы можете узнать это, вызвав cron.php и посмотрев в сторожевой таймер (Drupal »Admin» Logs »Recent Events).Там должна присутствовать запись о том, что cron был запущен.Решение: Узнайте, как cron.php заблокирован «просто кем угодно», часто это запись в конфигурации .htaccess или apache, часто это брандмауэр.Отключите это для вашего запрошенного IP или клиента.
...