В pub/index.php
следующем коде используется для установки URL изменений для медиа и статических ресурсов, чтобы опустить "/ pub":
$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
];
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
К сожалению, в CLI scripts ( bin/magento
) нет ничего подобного.
Я нашел класс Magento\Setup\Mvc\Bootstrap\InitParamListener
со следующим кодом:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Но я не понимаю, откуда этот Zend Service Manager извлекает данные и как можно повлиять на них.
Моя конкретная проблема заключается в том, что индексатор должен генерировать полные URL-адреса и в настоящее время делает это так http://magento.local/pub/media/...
, как мне нужно, чтобы это былоhttp://magento.local/media/...
Как я могу сказать CLI, что мой виртуальный хост указывает на то, что pub
«pub» не должно быть частью URL?
В идеале это должно работать без необходимости полагаться на дополнительные параметры CLI или переменные среды.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Это на самом деле работает для всех команд (очевидно, шагая по коду), но команды вне setup:
пространства имен неправильно выдают ошибку, что опция не существует.