【问题标题】:Fusebox installation without access to webroot无需访问 webroot 即可安装 Fusebox
【发布时间】:2009-05-21 08:54:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: coldfusion fusebox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      这是 COLDFUSION 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 执行包含,您可以让 Application.cfc 的 OnRequest 方法执行 cfinclude。

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

      您可能仍然需要一个 index.cfm,这样您的网络服务器就不会提供目录列表或 404,但如果文件为空也没关系。

      【讨论】:

        【解决方案3】:

        在 Application.cfc 中:

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

        【讨论】:

        • 映射将起作用,但如果您尝试在该映射 (fusebox5.Application) 中扩展组件,它将中断。在找到扩展组件之前,您无法创建 Application.cfc 的实例,但在您拥有到它的映射之前,您无法找到扩展组件。失败。
        猜你喜欢
        • 2013-11-29
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 1970-01-01
        • 2012-06-12
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多