Dans pub/index.php
, le code suivant est utilisé pour définir les URL de modification des médias et des actifs statiques de manière à omettre "/ 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);
Malheureusement, dans les scripts CLI ( bin/magento
), il n'y a rien de tel.
J'ai trouvé la classe Magento\Setup\Mvc\Bootstrap\InitParamListener
avec le code suivant:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Mais je ne comprends pas où ce Zend Service Manager récupère les données et comment il pourrait être possible de les influencer.
Mon problème concret est qu'un indexeur doit générer des URL complètes et le fait actuellement comme http://magento.local/pub/media/...
, où j'en ai besoinhttp://magento.local/media/...
Comment puis-je dire à la CLI que mon hôte virtuel pointe vers pub
et que "pub" ne doit pas faire partie des URL?
Idéalement, cela devrait fonctionner sans avoir à s'appuyer sur des paramètres CLI ou des variables d'environnement supplémentaires.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Cela fonctionne en fait pour toutes les commandes (évident en parcourant le code), mais les commandes en dehors de l' setup:
espace de noms donnent incorrectement une erreur que l'option n'existe pas.