无法访问webroot的Fusebox安装

时间:2009-05-21 08:54:43

标签: coldfusion fusebox

之前(和本地)我已将fusebox5目录放在Web根目录中,然后树中任何位置的应用程序都能够访问它。我之前也使用过Application.cfm而不是.cfc。

在这种环境中,我无法访问webroot,并且FB文件无论如何都不需要那么远,因此我计划将它们与应用程序一起存储。如果Application.cfc正在使用中,我认为index.cfm被忽略了,我是否正确(因此没有必要将cfinclude值改为例如../fusebox5/)?如果是这样,如何在根目录或映射中没有Fusebox的情况下包含框架?错误是:

Could not find the ColdFusion Component or Interface fusebox5.Application. 

3 个答案:

答案 0 :(得分:2)

不,您的应用仍然需要index.cfm。您需要的是Application.cfc中Fusebox的cf应用程序映射。请查看Ray Camden的Application.cfc template,了解设置应用程序特定映射的示例。

答案 1 :(得分:1)

您可以在应用根目录的子文件夹中运行Fusebox 5+。它可能不是让它成功的最明显的事情。

不幸的是,您无法为扩展Application.cfc创建动态映射,因为您的Application.cfc尚未实例化 - 您将获得鸡与蛋的情景。您无法创建到Fusebox的映射,因为您的Application.cfc没有启动,您无法启动Application.cfc,因为它无法找到它应该扩展的组件。

这是COLDFUSION中的一个BUG 8. ColdFusion应按此顺序寻找映射:

  • 来自CF管理员的映射文件夹
  • 当前目录下的子目录
  • Web根目录下的子目录名为

使用CreateObject()时会执行此操作,但在cfcomponent上使用Extends属性时则不会。

最简单的解决方案是像使用任何应用程序一样使用Application.cfc,然后在index.cfm中包含fusebox。您的文件夹结构如下所示:

/myapp/fusebox5/
/myapp/index.cfm
  -- consists of <cfinclude template="fusebox5/fusebox5.cfm" />

只要不使用Application.cfc的OnRequest拦截请求,或者使用OnRequest,就不会忽略index.cfm文件,请确保包含预期目标(几乎总是index.cfm)反正)。

如果您不想要index.cfm来执行include,您可以让Application.cfc的OnRequest方法执行cfinclude。

<cffunction name="onRequest">
    <cfinclude template="fusebox5/fusebox5.cfm">
</cffunction>

您仍然可能需要index.cfm,因此您的Web服务器不会提供目录列表或404,但如果文件为空则没问题。

答案 2 :(得分:0)

在Application.cfc中:

<cfscript>
    this.mappings = {}; //create a new structure to store app-specific mappings
    this.mappings["Fusebox"] = expandPath('./Fusebox'); //add mapping
</cfscript>