Magento 2: Как получить путь к корневому каталогу?
Класс \Magento\Framework\Filesystem\DirectoryList используется для получения таких путей как root, media, var и т. д.
Пример с ObjectManager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $directory = $objectManager->get('\Magento\Framework\Filesystem\DirectoryList'); echo $rootPath = $directory->getRoot();
Пример с Dependency Injection
protected $_dir; ... public function __construct( ... \Magento\Framework\Filesystem\DirectoryList $dir, ... ) { ... $this->_dir = $dir; ... }
Примеры полученя путей к различным каталогам
$this->_dir->getRoot(); // Output: /var/www/html/myproject $this->_dir->getPath('media'); // Output: /var/www/html/myproject/pub/media $this->_dir->getPath('pub'); // Output: /var/www/html/myproject/pub $this->_dir->getPath('static'); // Output: /var/www/html/myproject/pub/static $this->_dir->getPath('var'); // Output: /var/www/html/myproject/var $this->_dir->getPath('app'); // Output: /var/www/html/myproject/app $this->_dir->getPath('etc'); // Output: /var/www/html/myproject/app/etc $this->_dir->getPath('lib_internal'); // Output: /var/www/html/myproject/lib/internal $this->_dir->getPath('lib_web'); // Output: /var/www/html/myproject/lib/web $this->_dir->getPath('tmp'); // Output: /var/www/html/myproject/var/tmp $this->_dir->getPath('cache'); // Output: /var/www/html/myproject/var/cache $this->_dir->getPath('log'); // Output: /var/www/html/myproject/var/log $this->_dir->getPath('session'); // Output: /var/www/html/myproject/var/session $this->_dir->getPath('setup'); // Output: /var/www/html/myproject/setup/src $this->_dir->getPath('di'); // Output: /var/www/html/myproject/var/di $this->_dir->getPath('upload'); // Output: /var/www/html/myproject/pub/media/upload $this->_dir->getPath('generation'); // Output: /var/www/html/myproject/var/generation $this->_dir->getPath('view_preprocessed'); // Output: /var/www/html/myproject/var/view_preprocessed $this->_dir->getPath('composer_home'); // Output: /var/www/html/myproject/var/composer_home $this->_dir->getPath('html'); // Output: /var/www/html/myproject/var/view_preprocessed/htmlПРИМЕЧАНИЕ. Использование ObjectManager в подавляющем большинстве случаем не рекомендуется (кроме случаев использования в фабриках или тестах). Используйте Dependency Injection.