In pub/index.php, il seguente codice viene utilizzato per impostare gli URL di modifica per i media e le risorse statiche in modo da omettere "/ 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);
Sfortunatamente negli script CLI ( bin/magento) non c'è nulla di simile.
Ho trovato la classe Magento\Setup\Mvc\Bootstrap\InitParamListenercon il seguente codice:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Ma non capisco dove questo Zend Service Manager recuperi i dati e come potrebbe essere possibile influenzarli.
Il mio problema concreto è che un indicizzatore deve generare URL completi e attualmente lo fa http://magento.local/pub/media/..., dove ne ho bisognohttp://magento.local/media/...
Come posso dire alla CLI che il mio host virtuale punta pube "pub" non dovrebbe far parte degli URL?
Idealmente, questo dovrebbe funzionare senza dover fare affidamento su parametri CLI aggiuntivi o variabili di ambiente.
--magento-init-params=MAGE_DIRS[media][uri]=media. Questo in realtà funziona per tutti i comandi (evidente passando attraverso il codice), ma i comandi al di fuori dello setup:spazio dei nomi danno erroneamente un errore che l'opzione non esiste.