在中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脚本(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
“发布”不应该是URL的一部分?
理想情况下,该方法无需依赖其他CLI参数或环境变量即可工作。
--magento-init-params=MAGE_DIRS[media][uri]=media
。这实际上适用于所有命令(通过单步执行代码可以明显看出),但是setup:
名称空间外部的命令错误地给出了该选项不存在的错误。