【发布时间】:2014-11-01 10:59:25
【问题描述】:
我正在运行一个 cron,它发送一封电子邮件,我在其中向用户发送应用程序链接。 在我的配置文件中,我将应用程序 url 设置为“url()”,这为我提供了到浏览器中应用程序公共路径的正确路径。但是当我在 cron 中运行它时,同样的事情是只给出 'localhost'。
如何在命令行中获取应用程序 url?
【问题讨论】:
标签: php laravel-4 cron command-line-interface
我正在运行一个 cron,它发送一封电子邮件,我在其中向用户发送应用程序链接。 在我的配置文件中,我将应用程序 url 设置为“url()”,这为我提供了到浏览器中应用程序公共路径的正确路径。但是当我在 cron 中运行它时,同样的事情是只给出 'localhost'。
如何在命令行中获取应用程序 url?
【问题讨论】:
标签: php laravel-4 cron command-line-interface
除了在一种情况下使用 url() 而在另一种情况下使用配置值之外,您还可以预先只使用一次 URL::forceRootUrl(),然后在任何地方使用 url()。
例如,如果您在命令代码的开头执行一次:
URL::forceRootUrl("http://example.whatever");
...那么这就是url() 从那时起将返回的内容。此外,action() 等其他助手将使用它作为基础并返回您所期望的。
【讨论】:
如果您通过设置 laravel artisan 命令通过 cron 运行 php 脚本,则与通过浏览器运行脚本时不同,您不会获得任何 SEVER 执行环境信息或 HTTP 代理信息。 您的函数 'url()' 在内部从 SERVER 变量的 [HTTP_HOST]/[SERVER_NAME] 获取有关公共 url 的信息,如果您从 cron 运行 php 脚本(通过 artisan 命令),这些信息通常不存在。
在这种情况下,如果您确实需要应用程序的公共 url,您可以在包含的配置文件中设置它,并在这种情况下使用您的 url() 函数在任何其他情况下。
【讨论】: