Magento 1.8.1.0 wysiwyg редактор не отображает миниатюры в менеджере изображений
-
16-10-2019 - |
Вопрос
Я публикую это для комментариев о ошибке и, чтобы помочь любому, у кого такая же проблема. (Ответ мне опубликовал)
При использовании редактора Wysiwyg и вставки изображений диспетчер изображений не отображает изображения миниатюры.
Глядя на URL -адрес изображения, произведенный Magento, я вижу, что URL не хватает / wysiwyg / portion
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 без постоянной.
Другие советы
У нас была такая же проблема на клиентском сайте, на самом деле было довольно много элементов, и я могу предложить, вероятно, объяснение того, как не существует проблема с изображением, даже если это, по-видимому, не должно быть возможным:
Проблема, как описано выше, присутствовала, в результате чего Magento проверял на
media/wysiwyg/.thumbs/image.jpg
, в отличие от правильного местоположенияmedia/wysiwyg/.thumbs/wysiwyg/image.jpg
, и если присутствует, отображая ссылку на неправильный URLhttp://example.com/media//wysiwyg/.thumbs/image.jpg
фтУ нас было установлено 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; }
Это уникально для нас, но мы также отрицали доступ к каталогам DotFile и ранее не заметили это как проблему, потому что мы никогда не обслуживали их, пока не установили Appsec-212, поэтому даже когда мы исправили проблему, мы получали 404 что -нибудь в
.thumbs
Проблема, с которой мы столкнулись, все еще существует в 1.9.1.0 (последняя версия на момент написания) - я не буду принять никому, потому что изображения все еще служат «на лету» без использования .thumbs
каталог, это было только с введением Appsec-212 в сочетании с символизированным media
Справочник, который привел к созданию файлов большого пальца в неправильном месте, что затем привело к неправильно проверенному пути, чтобы вернуть True, и для нас впоследствии просмотрели 404 на наших изображениях.
Как ни странно, Appsec-212 исправил бы проблему, если бы не наше соответствие media
каталог.
Кстати, вот наши модификации:
В приложении/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 . '/';
}
/**
В приложении/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;
}
Предпочтительно путем настройки модуля, а не перезаписывания файла Core.