如何重新定位我的magento商店的媒体目录?

时间:2012-03-19 22:02:21

标签: magento

我想将我的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设置为此子域。

有没有人有移动媒体目录的经验?

3 个答案:

答案 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)

嗯,为什么攻击Magento的代码,当它实际上是一个Web服务器配置与Magento后端的url字段中的正确条目相结合时?

使用DNS中的CNAME条目轻松处理子域,指向同一服务器和服务器配置文件中的虚拟服务器条目,该条目使用另一个驱动器上的目录作为其doc根目录(使用Apache?)