我在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
答案 0 :(得分:7)
我做了一些研究,这就是我想出来的......
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
如果您没有将所有组件放在同一个文件夹中,请从顶层目录中尝试。
让我知道你能不能给它一个机会!