job create php drupal cron

php - create - ¿Cómo obtener Drupal''s $ base_url para trabajar en un trabajo cron?



crontab generator (2)

¿Cómo obtener $ base_url para mostrar la URL correcta para mi sitio Drupal cuando estoy ejecutando un trabajo cron? ¿Tengo que configurar el $ base_url global de forma manual para que eso suceda? ¿Tengo que ejecutar el trabajo cron como un usuario registrado?

Cuando ejecuto mysite.com/cron.php a mano todo parece funcionar bien: $ base_url se establece en la url correcta. Sin embargo, cuando ejecuto un comando similar a través de cron o drush, $ base_url se establece en un "http: // default" genérico.

Lo curioso es que cuando ejecuto cron manualmente como un usuario registrado desde dentro de Drupal (usando devel, por ejemplo), $ base_url aways apunta a la url derecha.

¿Alguna sugerencia?

Gracias por adelantado,

León


Su cron probablemente esté configurado incorrectamente.

Puede usar wget o curl, que es efectivamente lo mismo que ejecutar el cron "a mano". Algo como esto:

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

Probablemente esté utilizando drupal.sh, que afirma que debe usar "http: //default/cron.php como el URI". Esto romperá el manejo $ base_url. Lo siguiente podría funcionar con drupal.sh.

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

Cuando use drush, es posible que deba proporcionar el argumento --uri:

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

También podría simplemente establecer la variable $ base_url en settings.php (que es una forma perfectamente válida para hacerlo, no un hack).


Vamos a caminar a través de varias causas posibles:

  • wget, curl o lynx no existen en el servidor. Intente ejecutar estos comandos a mano, su sistema operativo le dirá si los programas no están disponibles. Solución: haga que estén disponibles, instálelos o solicite a su administrador de sistemas que los haga disponibles o instálelos.
  • wget, curl y los gustos no pueden conectarse al mundo exterior. Llame el comando cron completo a mano, pero _ asegúrese de omitir los parámetros --silent o --quit, quiere obtener información detallada. Es una buena oportunidad que algunos cortafuegos estén bloqueando su conexión de adentro hacia afuera. Muchos sistemas bien protegidos sí lo hacen. Solución: póngase en contacto con su administrador de sistemas para desactivar el firewall.
  • Nadie puede conectar o ejecutar tu cron.php. Usted ya señala, ese no es el caso, sino para referencia futura: muchos servidores han bloqueado cron.php para que sea ejecutado por "cualquiera". Puede averiguarlo llamando a cron.php y buscando en el perro guardián (Drupal »Administrador» Registros »Eventos recientes). Un registro que dice que cron se ejecutó debería estar presente allí. Solución: descubra cómo el cron.php está bloqueado de "cualquiera", a menudo se trata de un registro en la configuración de .htaccess o apache, a menudo es un firewall. Inhabilítelo para su IP o cliente solicitado.