2010-10-22 25 views
5

¿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 de antemano,

Leo

Respuesta

0

Vamos debería recorrerán varias causas posibles:

  • wget, curl o el lince 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 se pueden conectar 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. Buena oportunidad de que firewall bloquee 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 su 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.
+0

Hola berkes, gracias por tu mensaje! Desafortunadamente, no creo que mi pregunta sea precisa. Cron está funcionando bien. Pero no está inicializando $ base_ulr. ¿Tendría alguna sugerencia? –

+0

está diciendo que si desencadena cron a mano, $ base_url se establece correctamente, pero si lo desencadena a través del servidor (línea de comandos) no lo es? – berkes

6

Tu cron probablemente se haya configurado incorrectamente.

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

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

Usted probablemente está utilizando drupal.sh, que afirma que se debe utilizar "http:. //default/cron.php como el URI" Esto romperá el manejo $ base_url. El siguiente podría trabajar con drupal.sh.

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

Al utilizar drush, puede que tenga que suministrar el argumento --uri:

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

También puedes, simplemente establecer la variable $ base_url en settings.php (que es una forma perfectamente válido hazlo, no un truco).

Cuestiones relacionadas