4

我在 tinyMCE 中遇到了各种奇怪的路径问题。我不确定它是否与 MCImageMana 有关,我将尝试总结我的设置:

我有一个.NET 网站。目前,应用程序根目录位于http://localhost/APP/

tiny_mce 托管在 ~/tiny_mce 中,imagemanager 插件当然在 ~/tiny_mce/plugins/imagemanager

~/uploads 是我希望上传/管理图像的地方

~/tiny_mce/plugins/imagemanager/web.config 包含这个键: <add key="filesystem.rootpath" value="../../../upload" />

它还包含 <add key="preview.urlprefix" value="{proto}://{host}/APP/" /> 考虑到应用程序根不在主机名根(说真的,我不应该硬编码......但这是另一个问题)

到目前为止一切顺利——当我从 tinyMCE 中的图像对话框浏览时,我得到了图像浏览器,它浏览了正确的文件夹

当我选择一张图片时,奇怪就开始了。以下是“插入/编辑图像”表单的“图像 URL”框中的内容:

../APPot/上传/Image.JPG

应用程序?我勒个去?不应该只是“上传/Image.JPG”吗?

这是与

tinyMCE.init({
//.....
relative_urls: true,
remove_script_host: true,
document_base_url: 'http://localhost/APP/'
});

并且

mcImageManager.init({
relative_urls: true,
remove_script_host: true,
document_base_url: 'http://localhost/APP/'
});

我不知道第二个是否有必要,甚至做任何事情

“ot”从何而来?我认为它的存在是它无法弄清楚如何使用 document_base_url 的原因。

如果我将 url 前缀重置为原始设置: <add key="preview.urlprefix" value="{proto}://{host}/" />,我最终会得到:

../上传/DSCF0546.JPG

这实际上似乎更近了一点。那里没有塞满“ot”,但它是一个目录。

有人知道发生了什么吗?

4

2 回答 2

1

TL;博士

示例配置

  • 你的网站www.example.com有 DocumentRoot/var/www-data/
  • 你把你的图片上传到 /var/www/uploads/images
  • static.example.com使用 DocumentRoot 从 vhost 提供图像/var/www

对应设置

  • 设置preview.wwwroot/var/www
  • 设置filesystem.rootpath/var/www/uploads/images
  • 设置preview.urlprefixhttp://static.example.com(或//static.example.com

扩展解释

当狂野的“ds”出现时,愉快地编码!

问题在于Moxiecode_ManagerEngine::convertPathToURI它使用了一段代码$uri = substr($abs_path, strlen($root));,其中$abs_path“服务器”路径 ( /var/www/uploads/images/image.png)$root$root = $this->getSiteRoot();. 默认情况下,MCIE 尝试“猜测”站点根 URL(它猜测错误/var/www-data/)。在我的情况下,我将上传的文件保存到不同的服务器,其中的 siteurl 有点不同。所以 substr 删除了完全不相关的部分$abs_path

substr('/var/www/uploads/images/image.png', strlen('/var/www-data/')) == 'ds/images/image.png'

要解决此问题,您需要设置preview.wwwroot配置指令。如果设置,它会从 getSiteRoot 返回并相应地剥离。

substr('/var/www/uploads/images/image.png', strlen('/var/www/')) == 'uploads/images/image.png'

的代码Moxiecode_ManagerEngine::convertPathToURI很愚蠢,应该修复,但这个解决方案已经足够好了。

于 2014-03-12T15:01:04.780 回答
0

既然relative_urls:是真的,document_based_url就是用来生成路径的。尝试设置relative_urls:为假。这是一些解释选项的文档:

于 2013-02-27T19:05:54.220 回答