5

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

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

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

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

编辑

对不起,我弄错了。cfinvoke似乎工作正常。我哽咽着cfobject

4

1 回答 1

10

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

创建自定义标签 (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

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

让我知道你是否能够试一试!

于 2012-05-09T19:38:25.087 回答