【问题标题】:How to get root directory in yii2yii2如何获取根目录
【发布时间】:2014-06-03 00:58:11
【问题描述】:

yii2 问题

我的yii2安装在d:\wamp\www\yii2store

我想获取上面的路径来保存我或用户将上传的图像。

我已经在Yii::getAlias('@webroot') 中传递了所有可用的参数(下面是我使用的参数列表)。

@yii - 框架目录。

@app - 当前运行的应用程序的基本路径。

@runtime - 运行时目录。

@vendor - Composer 供应商目录。

@webroot - 当前运行的 web 应用程序的 web 根目录。

@web - 当前正在运行的 Web 应用程序的基本 URL。

而且,一旦我获得了保存图像的路径,那么我怎样才能获得类似 localhost/yiistore2/upload 的路径以在 img 标签 src 中使用。

还有一件事,我如何使用 Yii::setAlias() 创建自己的别名以及在哪里创建它,以便我可以在每个控制器上加载它。

【问题讨论】:

  • 这里是 Yii2 中可用的默认别名列表:yiiframework.com/wiki/667/…
  • 已经通过但无法得到我想要的,所以下面是正确的解决方案。

标签: php frameworks yii2


【解决方案1】:

要获取基本 URL,您可以使用它(将返回“http://localhost/yiistore2/upload”)

Yii::app()->baseUrl

以下代码将仅返回“localhost/yiistore2/upload”而不返回 http[s]://

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

或者您可以获取 webroot 路径(将返回“d:\wamp\www\yii2store”)

Yii::getPathOfAlias('webroot')

【讨论】:

  • 这些方法我已经试过了,yii2已经没有了。
  • 在 yii2:Yii::$app->getUrlManager()->getBasseUrl()
  • 对于 Yii2,您可以使用 Yii::$app->basePath 获取基本路径
  • 仍然没有回答如何像这样获取 baseUrl 的问题:localhost Yii::$app->basePath 将给出类似:/Users/xxx/src/yii2-app跨度>
【解决方案2】:

试试这个,

我的安装在 D:\xampp\htdocs\advanced

\Yii::$app->basePath 会给出类似D:\xampp\htdocs\advanced\backend

\Yii::$app->request->BaseUrl 会给出类似localhost\advanced\backend\web\

您可以使用\Yii::$app->basePath 存储图像并使用\Yii::$app->request->BaseUrl 显示它

【讨论】:

    【解决方案3】:

    在 Yii2 中使用“getAlias”

       \Yii::getAlias('@webroot')
    

    【讨论】:

      【解决方案4】:

      打开文件 D:\wamp\www\yiistore2\common\config\params-local.php

      在返回之前粘贴下面的代码

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

      在 params-local.php 文件中插入上述代码后,您的文件应如下所示。

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

      现在要获取根目录的路径(在我的例子中是 D:\wamp\www\yiistore2),您可以在任何 php 文件中使用以下代码。

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

      【讨论】:

      • 如何获取该目录的URL?
      • 这是根目录的位置。这个目录的 URL 是什么意思请给我一些关于这个问题的例子。
      【解决方案5】:

      打开下面的文件C:\xampp\htdocs\project\common\config\params-local.php

      在您的代码之前:

      <?php
      
      return [
      
      
      ];
      

      在你的代码之后:

      <?php
      yii::setAlias('@path1', 'localhost/foodbam/backend/web');
      
      return [
      
      
      ];
      

      【讨论】:

        【解决方案6】:

        假设您的应用程序中有一个可写的“上传”文件夹:

        你可以这样定义一个参数:

        Yii::$app->params['uploadPath'] = realpath(Yii::$app->basePath) . '/uploads/';
        

        那么你可以简单地使用参数为:

        $path1 = Yii::$app->params['uploadPath'] . $filename;
        

        取决于您使用的是高级模板还是简单模板,基本路径将是(遵循 phazei 提供的link):

        简单的@app:你的应用程序根目录

        Advanced @app:您的应用程序根目录(前端或 后端或控制台,具体取决于您从何处访问)

        这样应用程序将比使用realpath(dirname(__FILE__).'/../../'));更便携

        【讨论】:

          【解决方案7】:

          如果你想获取你的yii2项目使用的根目录,假设你的项目名称是project_app你需要使用:

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

          在 Windows 上,您会看到“C:\dir\to\project_app”

          在 linux 上你会得到“/var/www/dir/to/your/project_app”

          我正式使用:

          echo Yii::getAlias('@webroot').'/..';
          

          我希望这对某人有所帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多