我想将我的magento商店的媒体目录移动到服务器上的其他驱动器。
查看app/etc/config.xml
我看到一个xml字段:
<config>
<default>
<filesystem>
<media>{{root_dir}}/media</media>
</filesystem>
</default>
</config>
我希望我可以将该值更改为新目录的位置,一切都会好的。
但是,查看code/core/Mage/Core/Model/Config/Options.php
,我发现媒体目录定义为$root.DS.'media';
而不是xml配置:
protected function _construct()
{
$appRoot= Mage::getRoot();
$root = dirname($appRoot);
$this->_data['app_dir'] = $appRoot;
$this->_data['base_dir'] = $root;
$this->_data['code_dir'] = $appRoot.DS.'code';
$this->_data['design_dir'] = $appRoot.DS.'design';
$this->_data['etc_dir'] = $appRoot.DS.'etc';
$this->_data['lib_dir'] = $root.DS.'lib';
$this->_data['locale_dir'] = $appRoot.DS.'locale';
$this->_data['media_dir'] = $root.DS.'media';
$this->_data['skin_dir'] = $root.DS.'skin';
$this->_data['var_dir'] = $this->getVarDir();
$this->_data['tmp_dir'] = $this->_data['var_dir'].DS.'tmp';
$this->_data['cache_dir'] = $this->_data['var_dir'].DS.'cache';
$this->_data['log_dir'] = $this->_data['var_dir'].DS.'log';
$this->_data['session_dir'] = $this->_data['var_dir'].DS.'session';
$this->_data['upload_dir'] = $this->_data['media_dir'].DS.'upload';
$this->_data['export_dir'] = $this->_data['var_dir'].DS.'export';
}
这是否意味着我对config.xml
所做的任何更改都不会影响我的实际配置?
我也知道这个目录需要是web可访问的,我需要通过magento管理工具配置Base Media URL以指向这个新目录。我计划将此新目录设置为子域,并将基本媒体URL设置为此子域。
有没有人有移动媒体目录的经验?
答案 0 :(得分:3)
这可以在操作系统级别轻松完成,无需捣乱Magento。只需创建symlink
ln -s /my/real/path/to/media /my/path/to/magento/media
答案 1 :(得分:2)
可以添加为符号链接, 但是你会在管理面板中遇到WYSIWYG编辑器的问题:)
需要以下:
编辑 /app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php
function getCurrentUrl()
$path = str_replace(Mage::getConfig()->getOptions()->getMediaDir(), '', $this->getCurrentPath());
更改为
$path = str_replace(realpath(Mage::getConfig()->getOptions()->getMediaDir()), '', $this->getCurrentPath());
答案 2 :(得分:1)
使用DNS中的CNAME条目轻松处理子域,指向同一服务器和服务器配置文件中的虚拟服务器条目,该条目使用另一个驱动器上的目录作为其doc根目录(使用Apache?)