In pub/index.php
wird der folgende Code verwendet, um Änderungs-URLs für Medien und statische Assets so festzulegen, dass "/ pub" weggelassen wird:
$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);
Leider gibt es in CLI-Skripten ( bin/magento
) nichts Vergleichbares.
Ich habe die Klasse Magento\Setup\Mvc\Bootstrap\InitParamListener
mit folgendem Code gefunden:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Ich verstehe jedoch nicht, wo dieser Zend Service Manager die Daten abruft und wie sie möglicherweise beeinflusst werden können.
Mein konkretes Problem ist, dass ein Indexer vollständige URLs generieren muss und dies derzeit dort tut http://magento.local/pub/media/...
, wo ich es brauchehttp://magento.local/media/...
Wie kann ich der CLI mitteilen, dass mein virtueller Host auf pub
URLs verweist und "Pub" nicht Teil von URLs sein sollte?
Im Idealfall sollte dies funktionieren, ohne dass zusätzliche CLI-Parameter oder Umgebungsvariablen erforderlich sind.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Dies funktioniert tatsächlich für alle Befehle (offensichtlich durch Durchlaufen des Codes), aber Befehle außerhalb des setup:
Namespace geben fälschlicherweise den Fehler aus, dass die Option nicht vorhanden ist.