How to get root directory in yii2

PhpFrameworksYii2

Php Problem Overview


yii2 Question

My yii2 install in d:\wamp\www\yii2store

I want to get above path to save images which will be uploaded by me or users.

I have pass all available arguments in Yii::getAlias('@webroot') (below are the lists of argument which I have used).

@yii - framework directory.

@app - base path of currently running application.

@runtime - runtime directory.

@vendor - Composer vendor directory.

@webroot - web root directory of currently running web application.

@web - base URL of currently running web application.

And also once I will get above path to save images then how can I get path something like this localhost/yiistore2/upload to be use in img tag src.

One more thing how can I create my own alias with Yii::setAlias() and where to create this so that I can load it on every controller.

Php Solutions


Solution 1 - Php

Open file D:\wamp\www\yiistore2\common\config\params-local.php

Paste below code before return

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

After inserting above code in params-local.php file your file should look like this.

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

return [];

Now to get path of your root (in my case its D:\wamp\www\yiistore2) directory you can use below code in any php file.

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

Solution 2 - Php

Use "getAlias" in Yii2

   \Yii::getAlias('@webroot')

Solution 3 - Php

Try out this,

My installation is at D:\xampp\htdocs\advanced

\Yii::$app->basePath will give like D:\xampp\htdocs\advanced\backend.

\Yii::$app->request->BaseUrl will give like localhost\advanced\backend\web\

You may store the image using \Yii::$app->basePath and show it using \Yii::$app->request->BaseUrl

Solution 4 - Php

Supposing you have a writable "uploads" folder in your application:

You can define a param like this:

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

Then you can simply use the parameter as:

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

Just depending on if you are using advanced or simple template the base path will be (following the link provided by phazei):

> Simple @app: Your application root directory > > Advanced @app: Your application root directory (either frontend or > backend or console depending on where you access it from)

This way the application will be more portable than using realpath(dirname(__FILE__).'/../../'));

Solution 5 - Php

If you want to get the root directory of your yii2 project use, assuming that the name of your project is project_app you'll need to use:

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

on windows you'd see "C:\dir\to\project_app"

on linux you'll get "/var/www/dir/to/your/project_app"

I was formally using:

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

I hope this helps someone

Solution 6 - Php

To get the base URL you can use this (would return "http:// localhost/yiistore2/upload")

Yii::app()->baseUrl

The following Code would return just "localhost/yiistore2/upload" without http[s]://

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

Or you could get the webroot path (would return "d:\wamp\www\yii2store")

Yii::getPathOfAlias('webroot')

Solution 7 - Php

Open below file C:\xampp\htdocs\project\common\config\params-local.php

Before your code:

<?php

return [
        
    
];

after your code:

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

return [
        
    
];

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTousif AliView Question on Stackoverflow
Solution 1 - PhpTousif AliView Answer on Stackoverflow
Solution 2 - PhpLatikov DmitryView Answer on Stackoverflow
Solution 3 - PhpDency G BView Answer on Stackoverflow
Solution 4 - PhpScopsView Answer on Stackoverflow
Solution 5 - PhpUchephilzView Answer on Stackoverflow
Solution 6 - PhpAkshay NaikView Answer on Stackoverflow
Solution 7 - PhpChandrashekhar SomwanshiView Answer on Stackoverflow