TinyMCE / MCImageManager路径问题

时间:2009-06-24 20:32:16

标签: path tinymce mcimagemanager

我在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/" /> 考虑到应用程序root不在主机名root(严重的是,我不应该硬编码......但这是另一个问题)

到目前为止一直很好 - 当我从tinyMCE中的图像对话框浏览时,我得到图像浏览器并浏览正确的文件夹

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

../ APPot /上传/ image.jpg的

APPot?我勒个去?它不应该只是“upload / 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。

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

../上传/ DSCF0546.JPG

实际上似乎更接近了。没有“ot”挤在那里,但它是一个目录关闭。

有人知道发生了什么事吗?

2 个答案:

答案 0 :(得分:1)

TL; DR

配置示例

  • 您的网络www.example.com包含DocumentRoot /var/www-data/
  • 您将图片上传到/var/www/uploads/images
  • 您使用DocumentRoot static.example.com
  • 从vhost /var/www投放图片

相应的设置

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

扩展说明

狂野&#39; ds&#39;时快乐编码出现!

问题在于Moxiecode_ManagerEngine::convertPathToURI使用了一段代码$uri = substr($abs_path, strlen($root));,其中$abs_path是&#34;服务器&#34;路径(/var/www/uploads/images/image.png)和$root$root = $this->getSiteRoot();。默认情况下,MCIE会尝试猜测&#34; siteroot 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 config指令。如果设置,则从getSiteRoot返回并相应地剥离。

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

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

答案 1 :(得分:0)

由于relative_urls:为真,document_based_url用于生成路径。尝试将relative_urls:设置为false。以下是一些解释选项的文档: