7

如何在 YiiCConsoleApplication应用程序中获取基本 URL?

我尝试Yii::app()->request->getBaseUrl(true)并最终出现以下错误。

未定义索引:SERVER_NAME (/var/www/yii/framework/web/CHttpRequest.php:279)

4

5 回答 5

13

控制台应用程序中没有请求对象。Web 应用程序中的请求对象是CHttpRequest的实例,如果您在离线任务中生成 URL,则必须以其他方式配置 baseUrl,可能在配置中:

"request" => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '/yii-project/index-test.php',
),

// OR

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '/yii-project',
    'scriptUrl' => 'index-test.php',
),
于 2012-12-19T19:04:42.613 回答
3

对于 Yii2 高级模板,params.php如果您的控制台或普通应用程序目录中不存在该文件,请创建文件config并粘贴以下代码:

return [
   'frontendUrl' => 'http://yourdomain.com'
];

以便在控制台中通过以下方式访问它:

echo Yii::$app->params['frontendUrl'];
于 2016-11-10T06:43:46.617 回答
0

您必须在组件数组中添加 config/console.php

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '',
    'scriptUrl' => '',
),

并添加 urlManager 以便它将 index.php?r=site/action 从 url 中删除,您将拥有漂亮的 url

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
        '<controller:\w+>' => '<controller>/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
),
于 2017-04-26T14:25:30.450 回答
-3

请尝试以下方式获取基本 url 页面,

echo Yii::app()->getBaseUrl(true);
于 2012-12-19T11:39:53.460 回答
-3

像这样获取主页网址:

http://www.demo.local

echo Yii::app()->homeUrl;
于 2013-09-26T08:05:13.677 回答