Magento 1.8.1:如果使用符号链接,则会出现媒体目录错误

时间:2014-01-29 15:03:57

标签: magento wysiwyg magento-1.8

我在安装Magento时出现问题,在CMS中使用wysiwig编辑器插入图像时,文件夹会反复打开。

文件夹结构应为:

- infortis
    - brands
    - fortis
    - ultimo

但我得到的是:

-infortis
    -infortis
        -infortis
            -infortis
                -infortis

这只是不断重复。

Magento版本1.8.1。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:11)

我发现以下编辑使其按预期工作,并且也适用于非符号链接(dev)资源:

在与mentiond Mage_Cms_Helper_Wysiwyg_Images相同的班级中,应用以下补丁:

# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- <html>Images.php (<b>Today 4:14:50 PM</b>)</html>
+++ <html><b>Current File</b></html>
@@ -223,7 +223,7 @@
     public function getCurrentUrl()
     {
         if (!$this->_currentUrl) {
-            $path = str_replace(Mage::getConfig()->getOptions()->getMediaDir(), '', $this->getCurrentPath());
+            $path = str_replace(realpath(Mage::getConfig()->getOptions()->getMediaDir()), '', $this->getCurrentPath());
             $path = trim($path, DS);
             $this->_currentUrl = Mage::app()->getStore($this->_storeId)->getBaseUrl('media') .
                                  $this->convertPathToUrl($path) . '/';



# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- <html>Images.php (<b>f47f0ff</b>)</html>
+++ <html><b>Current File</b></html>
@@ -68,7 +68,7 @@
      */
     public function getStorageRoot()
     {
-        return Mage::getConfig()->getOptions()->getMediaDir() . DS . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY
+        return realpath(Mage::getConfig()->getOptions()->getMediaDir()) . DS . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY
             . DS;
     }

答案 1 :(得分:2)

Mage_Cms_Helper_Wysiwyg_Images::convertIdToPath

中找到了问题

核心代码如下。

public function convertIdToPath($id)
{
    $path = $this->idDecode($id);
    if (!strstr($path, $this->getStorageRoot())) {
        $path = $this->getStorageRoot() . $path;
    }
    return $path;
}

修复是在获取存储根目录时使用realpath,如下所示。

public function convertIdToPath($id)
{
    $path = $this->idDecode($id);
    $realpath = $this->getStorageRoot();
    if (is_link(rtrim($realpath,'/'))) {
        $realpath = realpath($realpath);
    }
    if (!strstr($path, $realpath)) {
        $path = $realpath . $path;
    }
    return $path;
}

所以我们所做的就是重写Mage_Cms_Helper_Wysiwyg_Images并使用更新的converIdToPath函数。我找到了原始解决方案on a German website,但如果您说没有链接的开发系统和另一个带链接的系统,那将会破解。

答案 2 :(得分:0)

我们最近也遇到了这个问题,我想分享更多信息以保存下一个人的某个时间。如果您正在运行Magento Enterprise Edition并且已经建立了有效的支持协议,则可以使用官方补丁。只需打开支持票并直接请求补丁。补丁名称为&#34; PATCH_SUPEE-2662_EE_1.13.1.0_v1&#34;。