Magento 1.8.1.0 WysiWygエディターは画像マネージャーにサムネイルを表示していません

magento.stackexchange https://magento.stackexchange.com/questions/14820

質問

私はこれをバグについてのコメントのために投稿し、同じ問題を抱えている人を助けるために投稿しています。 (自分で投稿された回答)

wysiwygエディターを使用して画像を挿入する場合、画像マネージャーはサムネイル画像を表示していません。

Magentoによって作成された画像URLを見る

http://site.domain/media//.thumbs/ex_logo_sm.jpg?rand = 1392103618

URLのダブル//に注意して、純粋に欠けているように見えます

役に立ちましたか?

解決

コードをトレースすると、にあるヘルパールーチンには絶えず欠落しているように見えます Mage_Cms_Helper_Wysiwyg_Images::getBaseUrl()

ルーチンはそのようなものです:

public function getBaseUrl()
    {
        return Mage::getBaseUrl('media') . '/';
    }

に変更を加えます

public function getBaseUrl()
    {
        return Mage::getBaseUrl('media') . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY . '/';
    }

問題を修正します。

これはから呼ばれます Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl()

return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;

定数が所定の位置にないことなく、間違ったURLを明確に出力します。

他のヒント

クライアントサイトでこれと同じ問題がありましたが、実際にはかなりの数の要素がありましたが、おそらく、存在しない画像の問題がどのように引き起こされたかについて、おそらく説明を提供できます。

  1. 上記の問題は存在していました、それによりマゼントがチェックしていました media/wysiwyg/.thumbs/image.jpg, 、正しい場所とは対照的に media/wysiwyg/.thumbs/wysiwyg/image.jpg, 、および存在する場合、の誤ったURLへのリンクを表示する場合 http://example.com/media//wysiwyg/.thumbs/image.jpg FD

  2. AppSec-212がインストールされているため、の使用が導入されました realpath() しかし、セキュリティの問題を削除するには、これと私たちのシンリンクの使用の組み合わせを削除するために media ディレクトリが原因でした Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbsPath() のディレクトリを返す media/wysiwyg/.thumbs, 、 とは対照的に media/wysiwyg/.thumbs/wysiwyg - その理由は、この方法が、私たちのメディアディレクトリが経由で拡張されていたため、Trueに評価されなかった条件付きチェックを作成するためです realpath() そして、そのため、0を返しませんでした strpos() チェック、以下の小切手、6行目を参照してください。

    public function getThumbsPath($filePath = false)
    {
        $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir();
        $thumbnailDir = $this->getThumbnailRoot();
    
        if ($filePath && strpos($filePath, $mediaRootDir) === 0) {
            $thumbnailDir .= DS . dirname(substr($filePath, strlen($mediaRootDir)));
        }
    
        return $thumbnailDir;
    }
    
  3. これは私たちにとってユニークですが、Dotfile Directoriesへのアクセスも拒否していましたが、AppSec-212をインストールするまで提供したことがなかったため、これを以前に問題として気づいていませんでした。何でも .thumbs

私たちが経験した問題は、1.9.1.0(執筆時点での最新バージョン)にまだ存在します - 画像がまだ「その場で」を使用せずに機能しているので、誰も通知しないと思います。 .thumbs ディレクトリ、それはAppSec-212の導入と、シンラムリンクと組み合わせたものでした media ディレクトリでは、サムファイルが間違った場所で生成されたため、誤ってチェックされたパスがtrueを返し、その後画像に404を確認しました。

面白いことに、AppSec-212は、それが私たちの同時に行われなかった場合、問題を修正していたでしょう media ディレクトリ。

ちなみに、ここに私たちの修正があります:

App/Code/Core/Mage/CMS/Helper/WysiWyg/Images.php:

@@ -89,7 +89,7 @@ public function getStorageRoot()
      */
     public function getBaseUrl()
     {
-        return Mage::getBaseUrl('media') . '/';
+        return Mage::getBaseUrl('media') . '/' . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY . '/';
     }

     /**

App/Code/Core/Mage/CMS/Model/WysiWyg/Images/Storage.php:

@@ -336,7 +336,7 @@ public function getThumbnailUrl($filePath, $checkFile = false)
         $mediaRootDir = $this->getHelper()->getStorageRoot();

         if (strpos($filePath, $mediaRootDir) === 0) {
-            $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));
+            $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen(realpath(Mage::getConfig()->getOptions()->getMediaDir())));

             if (! $checkFile || is_readable($mediaRootDir . $thumbSuffix)) {
                 $randomIndex = '?rand=' . time();
@@ -405,8 +405,8 @@ public function resizeOnTheFly($filename)
      */
     public function getThumbsPath($filePath = false)
     {
-        $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir();
-        $thumbnailDir = $this->getThumbnailRoot();
+        $mediaRootDir = realpath(Mage::getConfig()->getOptions()->getMediaDir());
+        $thumbnailDir = realpath($this->getThumbnailRoot());

         if ($filePath && strpos($filePath, $mediaRootDir) === 0) {
             $thumbnailDir .= DS . dirname(substr($filePath, strlen($mediaRootDir)));

実際、いくつかのエラーが一緒になっています。

デフォルトでは、Magentoはディレクトリの親指を保存しているようです media/wysiwyg/.thumbs/wysiwyg/. 。だが Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl() 親指を探します media/wysiwyg/.thumbs/.

エラーは親指がある場合にのみトリガーされます media/wysiwyg/.thumbs/. 。親指が間違ったディレクトリに保存される条件下ではわかりませんでした。しかし、少なくとも、一部のサーバーのみがこの問題を示す理由を説明しています。

だから、プロキシブルーが言ったことに加えて、あなたは変えなければならない Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl() から

public function getThumbnailUrl($filePath, $checkFile = false)
{
    $mediaRootDir = $this->getHelper()->getStorageRoot();

    if (strpos($filePath, $mediaRootDir) === 0) {
        $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));

        if (! $checkFile || is_readable($mediaRootDir . $thumbSuffix)) {
            $randomIndex = '?rand=' . time();
            return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;
        }
    }

    return false;
}

public function getThumbnailUrl($filePath, $checkFile = false)
{
    $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir() . DS;

    if (strpos($filePath, $mediaRootDir) === 0) {
        $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));

        if (! $checkFile || is_readable($this->getHelper()->getStorageRoot() . $thumbSuffix)) {
            $randomIndex = '?rand=' . time();
            return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;
        }
    }

    return false;
}

できれば、コアファイルを上書きすることではなく、モジュールを設定することにより。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top