使 Ubuntu 上的 ColdFusion 不区分大小写

6
我已经在Ubuntu 12.04上安装了apache2和ColdFusion 9。我已经使用Apache中的CheckSpelling模块禁用了区分大小写的URL和其他路径,这是Apache负责的。
现在,请注意,我正在处理大约4GB的遗留代码(大约6年),很少符合惯例。之前的编码人员并不关心大小写敏感性,因为应用程序托管在Windows Box上。就大多数情况而言,ColdFusion在和CreateObject方面表现良好,但似乎在代码库中经常使用的仍然区分大小写。
现在,我尝试了将代码移动到vfat分区的方法,但我遇到了许多文件名编码问题(我们与外国公司打交道,并获得许多特殊字符)。删除和/或重命名文件将很麻烦,因为大多数文件也在MySQL数据库中被引用,并且还必须在那里进行修改。因此,重新编码有点儿困难。
所以,我想知道在Linux上运行时,ColdFusion是否有任何特殊标志来忽略大小写,或者是否有另一种方法使所有内容都能够协同工作?
编辑
对不起,我弄错了。cfinvoke似乎可以正常工作。我遇到了cfobject的问题。

从CF9的CFINVOKE文档中: “在UNIX系统上,ColdFusion首先搜索与指定组件名称匹配但全部小写的文件。如果找不到该文件,则会查找与组件名称完全匹配且字符大小写相同的文件名。” 因此,基本上文件名不应该出错。您能分享一下具体的错误是什么吗?可能路径是问题所在。 - Sharondio
@Sharondio 对不起,我弄错了。它们是 cfobject 语句。 - Kyle Macey
根据文档,CFOBJECT使用相同的文件搜索过程。因此,基于此,我建议尝试不更改代码,将所有组件的大小写更改为小写。 - Sharondio
1个回答

11

我做了一些研究,以下是我的结论...

创建自定义标签(help.adobe.com)

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

cfinvoke文档 (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匹配任何大小写的东西,但如果没有什么出现,我会接受。 - Kyle Macey
说服老板了。效果非常好。 - Kyle Macey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接