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如何获取根目录的主要内容,如果未能解决你的问题,请参考以下文章