laravel 5中应用程序URL的含义是什么?

ech*_*shu 21 php queue laravel laravel-5 artisan

Config/app.phplaravel源中,实际使用的是url什么?

它说要使用的应用程序URL artisan command line tool,那么实际应该是什么?

我的意思是应该是http://mydomainname.com或应该是/var/www/laravel//var/www/laravel/public

当前配置

/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/

'url' => 'http://localhost/',
Run Code Online (Sandbox Code Playgroud)

如果我的应用程序源位于/var/www/目录并且laravel公用文件夹是/var/www/laravel/public ,http://mydomainname.com则指向在/var/www/laravel/public目录中解析

使用案例:

我将使用laravel schedular/app/Console/Kernel.php将被调度periodic sendMail commands,并且反过来将排队的邮件到数据库并发送queue listner比将处理队列为正常

队列在localhost(我的本地xamp服务器)上正常工作但是我担心url生产中的值应该是什么

pat*_*cus 36

当用户访问您的网站时,Laravel会从PHP的超级全局($ _SERVER,$ _GET,$ _POST等)获取有关请求的大量信息.部分信息是请求URL.

例如,如果您访问请求方法url()path(),则通过$ _SERVER超全局检索此信息:

$url = Request::url();
$path = Request::path();
Run Code Online (Sandbox Code Playgroud)

但是,工匠,命令,工作等不具备此信息的好处.它不是来自用户的普通HTTP请求,而是从命令行运行的PHP命令.因此,Laravel需要一种方法来确定应用程序的URL应该是什么.这是配置值的来源.

在您的示例中,您计划从队列中发送电子邮件.想象一下,您需要在其中一封电子邮件中包含指向您网站路线的链接,因此您可以使用UrlGenerator获取链接的网址(URL::route('route.name')).由于此代码在命令内运行,并且与任何类型的HTTP请求无关,因此将从您设置的配置值中选择基本应用程序URL config/app.php.

现在url应该更清楚一点,应该将值设置为应用程序的http url,而不是任何类型的目录路径.在你的例子中,它应该是http://mydomainname.com.

  • 这是最好的答案和描述性足以理解.谢谢 :-) (2认同)

Alm*_*k G 6

在生产时,应该设置为

'url' => 'http://your-live-domain.com',
Run Code Online (Sandbox Code Playgroud)

正如你所提到的,它将由工匠命令和队列使用.

您可以利用.env来存储您的实时域名.http://laravel.com/docs/5.1#environment-configuration

  • @echoashu对于`.env`的想法,你可以在你的配置中设置如下值:`'url'=> env('URL','http:// localhost /'),`.现在,如果在`.env`文件中提供`URL`值,则`url`配置值将设置为该值.如果你没有在`.env`文件中提供`URL`值,`'url'`配置值将被设置为传递给`env()`函数的默认值(在这种情况下``http ://本地主机/'`). (3认同)
  • @echoashu是的,没错.事件尽管它是首选的方式.这使您可以将敏感数据与版本控制区分开来. (2认同)