This How-To is useful if you are planning to move the Yii vendor directory outside the default location.
Or if there is a condition to develop another application under the same Yii2 framework, we could use the same vendor. It could save some space in the shared hosting.
Here we go: ¶
- assume the root dir is '/var/www/html',
- the vendor dir is moved to '/var/www/html/frameworks/yii2',
- the application is located in '/var/www/html/myapp' without vendor directory as it's been moved (point 2) & should be accessible through http://hostname/myapp/web/.
To make the myapp to work, modify these files: ¶
- the /web/index.php and yii (right under the project directory -- for Yii command from CLI). change the two lines of required file path (autoload.php & yii.php) to the correct vendor location.
- the /config/web.php. add vendorPath to the config with your vendor directory.
$config = [
// if your framework vendor directory is moved to another place
// which is not standard, then set the vendorPath attribute to
// the new vendor directory.
'vendorPath' => '../../frameworks/yii2',
'components' => [...]
// ... other configs
]
Composer ¶
As the vendor is moved from /var/www/html/myapp/vendor to /var/www/html/frameworks/yii2, you will find problem installing a new extension or updating the existing through composer command. To fix it, modify your composer.json (right under your project directory) by adding the vendor-dir attribute under the config section, eg:
// other settings ...
"config": {
"vendor-dir":"/var/www/html/frameworks/yii2",
"process-timeout": 1800
},
// other settings ...
Also, you may find "a man-in-the-middle attack" message when either update or install the new extension (i don't know if there is a relation to the modification of composer.json but i get it several times during experiments). To fix it run composer update --dry-run.
Done!
Use Yii 2 Advanced Template
You should use Yii 2 Advanced Template, its very simple
Ask
What benefit? I still cannot use one vendor path for more than one application.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.