在 yii2 高级应用程序中获取根目录

Get Root Directory in yii2 advanced app

我想在 yii2 高级应用程序中获取我的项目的根目录。

我的Url如下

http://localhost:83/Working-copy/mySite/backend/web/index.php

我用过

Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../'));

 echo Yii::getAlias('@anyname');

但它给了我

/var/www/Working-copy/mySite

我用过

Yii::$app->request->BaseUrl

但它也给了

/Working-copy/mySite/backend/web

我只要

/Working-copy/mySite

有帮助吗??

您有两个应用程序,后端和前端,每个都有不同的 BaseURL。路径 /Working-copy/mySite 它不是任何应用程序的 BaseURL。但是如果你在params中设置你可以有这个值。

这是我的解决方案。

  1. 将组件创建到公共文件夹中。
  2. 添加Request.php

    namespace common\components;
    
    
    class Request extends \yii\web\Request {
        public $web;
        public $adminUrl;
    
        public function getBaseUrl(){
            return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
        }
    
        public function getActualBaseUrl(){
            return str_replace($this->web, "", parent::getBaseUrl());
        }
    
        public function resolvePathInfo(){
            if($this->getUrl() === $this->adminUrl){
                return "";
            }else{
                return parent::resolvePathInfo();
            }
        }
    }
    
  3. 使用Yii::$app->request->getActualBaseUrl(). // this gives me /Working-copy/mySite