【问题标题】:Get base URL in Yii console application在 Yii 控制台应用程序中获取基本 URL
【发布时间】:2012-12-19 11:29:13
【问题描述】:

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

我尝试了Yii::app()->request->getBaseUrl(true),结果出现以下错误。

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

【问题讨论】:

  • 控制台中的 URL?你能举一个期望结果的例子吗?

标签: php yii console-application yii1.x


【解决方案1】:

控制台应用程序中没有请求对象。 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',
),

【讨论】:

  • 谢谢,我应该把这个放在哪里?
  • 这应该进入你的控制台配置文件,在组件部分,通常是protected/config/console.php
  • 尝试设置 hostInfo Property "CConsoleApplication.request" is read only.时出错
  • @user1954544 你应该把里面的“组件”数组,放入根配置;
【解决方案2】:

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

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

这样就可以在控制台中通过如下方式访问:

echo Yii::$app->params['frontendUrl'];

【讨论】:

    【解决方案3】:

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

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

    并添加 urlManager,这样它就会从 url 中删除 index.php?r=site/action 并且您将拥有漂亮的 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>',
        ),
    ),
    

    【讨论】:

      【解决方案4】:

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

      echo Yii::app()->getBaseUrl(true);
      

      【讨论】:

      • 文件系统中的应用程序基浴与基本 URL 有什么关系?
      • 它返回基本路径而不是基本 url。
      • 这适用于 Web 应用程序,但不适用于控制台应用程序。
      • @VinothBabu 我需要这个。谢谢
      • 请不要在没有经过适当测试的情况下放置-ve,它的工作代码
      【解决方案5】:

      像这样获取主页网址:

      http://www.demo.local

      echo Yii::app()->homeUrl;
      

      【讨论】:

        猜你喜欢
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多