在Ubuntu上使ColdFusion不区分大小写

Kyl*_*cey 5 apache coldfusion ubuntu case-sensitive coldfusion-9

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

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

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

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

编辑

我很抱歉,我错了.cfinvoke似乎工作正常.我窒息了cfobject

Mis*_*sha 9

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

创建自定义标签(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
Run Code Online (Sandbox Code Playgroud)

如果您没有所有组件都在同一个文件夹中,请从顶级目录中尝试.

如果你能给这个镜头,请告诉我!