2010-10-22 67 views
5

如何在运行cron作业时获取$ base_url以显示Drupal站点的正确url?我是否必须手动设置全局$ base_url才能发生?我是否必须以注册用户身份运行cron作业?

当我手工运行mysite.com/cron.php时,一切似乎都正常:$ base_url设置为正确的url。但是,当我通过cron或drush运行类似的命令时,$ base_url被设置为通用的“http:// default”。

有趣的是,当我从Drupal内部手动运行cron作为注册用户时(例如使用devel),$ base_url指向正确的url。

有什么建议吗?

由于提前,

利奥

回答

0

我们应该走线槽几个可能的原因:

  • wget的,卷曲或猞猁不存在于服务器上。尝试手动运行这些命令,您的操作系统会告诉您程序是否不可用。解决方案:使它们可用,安装它们,或要求您的系统管理员使其可用或安装它们。
  • wget,卷曲和喜欢不能连接到外部世界。手工调用整个cron命令,但是_make确保省略--silent或--quit参数,您想获得详细信息。良好的机会防火墙阻止您从内部到外部的连接。许多安全系统都可以。解决方法:联系您的系统管理员以禁用防火墙。
  • 没有人可以连接或运行您的cron.php。您已经指出,情况并非如此,但为了将来的参考:许多服务器已经阻止cron.php被“只有任何人”运行。你可以通过调用cron.php并查看看门狗(Drupal»Admin»Logs»Recent Events)来找到它。告诉cron运行的记录应该在那里。解决方案:找出cron.php是如何阻止“任何人”的,通常这是.htaccess或apache配置中的记录,通常是防火墙。禁用您的请求的IP或客户端。
+0

你好berkes,谢谢你的留言!不幸的是,我不认为我的问题是确切的。克龙运行良好。但它不会初始化$ base_ulr。你有什么建议吗? – 2010-10-22 17:55:41

+0

你是说如果你手动启动cron,$ base_url设置正确,但是如果你通过服务器(命令行)启动它,它不是? – berkes 2010-10-25 08:00:14

6

您的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 

你也可以只设置在settings.php配置的$ BASE_URL变量(这是一个完全有效的方法这样做,而不是黑客)。