2010-10-22 4 views
5

Comment obtenir $ base_url pour afficher l'URL correcte pour mon site Drupal lorsque j'utilise un travail cron? Dois-je configurer le $ base_url global manuellement pour que cela se produise? Dois-je exécuter le travail cron en tant qu'utilisateur enregistré?

Lorsque je lance mysite.com/cron.php à la main tout semble fonctionner correctement: $ base_url est défini sur l'URL correcte. Cependant, lorsque j'exécute une commande similaire via cron ou drush, $ base_url est défini sur un générique "http: // default". La chose amusante est que quand je lance manuellement cron en tant qu'utilisateur enregistré depuis Drupal (en utilisant devel, par exemple), $ base_url redirige vers l'URL de droite.

Des suggestions?

Merci à l'avance,

Leo

Répondre

0

Nous allons devrait marcher à travers plusieurs causes possibles:

  • wget, curl ou lynx n'existent pas sur le serveur. Essayez d'exécuter ces commandes à la main, votre système d'exploitation vous dira si les programmes ne sont pas disponibles. Solution: rendez-les disponibles, installez-les ou demandez à votre administrateur système de les mettre à disposition ou de les installer.
  • wget, curl et les goûts ne peuvent pas se connecter au monde extérieur. Appelez la commande cron entière à la main, mais assurez-vous d'omettre les paramètres --silent ou --quit, vous voulez obtenir des informations détaillées. Bonne chance certains pare-feu bloque votre connexion de l'intérieur vers l'extérieur. Beaucoup de systèmes bien sécurisés le font. Soldution: Contactez votre administrateur système pour désactiver le pare-feu. Personne ne peut se connecter ou exécuter votre fichier cron.php. Vous avez déjà souligné, ce n'est pas le cas, mais pour référence future: de nombreux serveurs ont bloqué cron.php pour être géré par "tout le monde". Vous pouvez le trouver en appelant cron.php et en regardant dans le chien de garde (Drupal »Admin» Journaux »Événements récents). Un enregistrement indiquant que cron a été exécuté devrait être présent là-bas. Solution: Découvrez comment le cron.php est bloqué à partir de "n'importe qui", il s'agit souvent d'un enregistrement en configuration .htaccess ou apache, souvent c'est un pare-feu. Désactivez-le pour votre IP ou votre client.
+0

Bonjour berkes, merci pour votre message! Malheureusement, je ne pense pas que ma question était précise. Cron fonctionne bien. Mais il n'initialise pas $ base_ulr. Auriez-vous des suggestions? –

+0

vous dites que si vous lancez cron à la main, $ base_url est réglé correctement, mais si vous le lancez sur le serveur (ligne de commande) ce n'est pas le cas? – berkes

6

Votre cron est probablement mal configuré.

Vous pouvez utiliser wget ou curl, ce qui revient à exécuter le cron "à la main". Quelque chose comme ceci:

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

Vous utilisez probablement drupal.sh, qui prétend que vous devez utiliser « http: //default/cron.php comme l'URI. » Cela va casser la gestion $ base_url. Les suivants peuvent travailler avec drupal.sh.

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

Lorsque vous utilisez drush, vous pourriez avoir à fournir l'argument --uri:

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

Vous pouvez aussi simplement définir la variable base_url de $ dans settings.php (ce qui est tout à fait valable une façon de faites-le, pas un hack).

Questions connexes