yii2如何获取根目录

Posted

技术标签:

【中文标题】yii2如何获取根目录【英文标题】:How to get root directory in yii2 【发布时间】: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/… 已经通过但无法得到我想要的,所以下面是正确的解决方案。 【参考方案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').'/..';

我希望这对某人有所帮助

【讨论】:

以上是关于yii2如何获取根目录的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 - 如何获取从控制器传递的所有视图参数?

yii2 如何获取 textInput 值并发送到另一个 textInput

Yii2 - 在模型中提交时如何从小部件中获取数据?

如何获取 yii2 select2 小部件的选定选项的值

无论如何从Yii2中的前一个过滤器获取变量?

如何使用Yii2中的left join从两个表中获取所有列数据