【问题标题】:Make ColdFusion on Ubuntu case-insensitive使 Ubuntu 上的 ColdFusion 不区分大小写
【发布时间】:2012-05-09 18:31:02
【问题描述】:

我在 Ubuntu 12.04 机器上安装了 apache2 和 ColdFusion 9。我已经在 Apache 中使用 CheckSpelling 模块来禁用区分大小写的 URL 和 Apache 负责的其他路径。

现在,请记住,我正在使用大约 4GB 的遗留代码(价值大约 6 年),而且很少有符合惯例的代码。我之前的编码人员并不关心区分大小写,而是将应用程序托管在 Windows Box 上。在大多数情况下,ColdFusion 的行为与 <cfinclude>CreateObject 一致,但似乎 <cfinvoke>(在代码库中经常使用)仍然区分大小写。

现在,我尝试了将代码移动到 vfat 分区的方法,但我遇到了一大堆文件名编码问题(我们与外国公司打交道,得到很多特殊字符)。删除和/或重命名文件会很麻烦,因为大多数文件也在 MySQL 数据库中被引用,并且也必须在那里进行修改。所以重新编码有点像一场噩梦。

所以,我很好奇 ColdFusion 在 Linux 上运行时是否有任何特殊标志以区分大小写,或者是否有另一种方法可以使这一切结合在一起?

编辑

对不起,我弄错了。 cfinvoke 似乎工作正常。我被cfobject窒息了

【问题讨论】:

  • 来自 CFINVOKE 的 CF9 文档:“在 UNIX 系统上,ColdFusion 首先搜索名称与指定组件名称匹配的文件,但都是小写的。如果找不到该文件,它会查找与组件名称完全匹配的文件名,并且具有相同的字符大小写。”所以基本上文件名不应该被轰炸。你能分享一下究竟是什么错误吗?可能是路径问题。
  • @Sharondio 对不起,我弄错了。他们是cfobject statments
  • 根据文档,相同的文件搜索过程适用于 CFOBJECT。因此,基于此,我会尝试不理会代码并将所有组件的大小写更改为小写。

标签: apache ubuntu coldfusion coldfusion-9 case-sensitive


【解决方案1】:

我做了一些研究,这就是我想出的......

Creating Custom Tags (help.adobe.com)

注意:虽然 ColdFusion 页面中的标签名称不区分大小写,但在 UNIX 上自定义标签文件名必须小写。

cfinvoke Documentation (help.adobe.com)

在 UNIX 系统上,ColdFusion 首先搜索名称与指定组件名称匹配但全部小写的文件。 如果未找到该文件,则查找文件名与组件名称完全匹配,字符大小写相同。

由于<cfinvoke> 是标准标签,标签本身不区分大小写。但是,听起来<cfinvoke> 的所有组件参数都需要有一个小写的文件名,以便使用不规则大小写的调用能够始终如一地成功。我知道你说重构很困难,但这是我想出的:

如果您有一个专门保存组件的文件夹,则可以在该文件夹中运行一个 shell 脚本,将它们全部重命名为小写(如果您不想被询问是否是,请删除 -i每次都确定):

for filename in *.cfc; do
  lowercase =`echo $filename | tr '[:upper:]' '[:lower:]'`
  mv -i $filename $lowercase
done

如果您没有将组件全部放在同一个文件夹中,请从顶层目录尝试。

如果你能试一试,请告诉我!

【讨论】:

  • +1 以获得合理的答案。我可能最终也会接受。但是,我的经理不允许我将所有文件名更改为小写,因为他发现在 CamelCase 中更容易阅读它们。 >:-(我将其保持打开状态,以防有人能想出一些能让 ColdFusion 匹配任何情况的东西,但如果没有出现任何情况都会接受
  • 跟老板谈过了。工作得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2017-12-01
  • 2011-10-14
  • 1970-01-01
  • 2012-12-01
  • 2013-03-06
相关资源
最近更新 更多