Make ColdFusion on Ubuntu case-insensitive

apache, case-sensitive, coldfusion, coldfusion-9, ubuntu

Solution

I did some research, and this is what I came up with...

Creating Custom Tags (help.adobe.com)

Note: Although tag names in ColdFusion pages are not case sensitive, custom tag filenames must be lowercase on UNIX.

cfinvoke Documentation (help.adobe.com)

On UNIX systems, ColdFusion searches first for a file with a name that matches the specified component name, but is all lower case. If it does not find the file, it looks for a file name that matches the component name exactly, with the identical character casing.

Since `<cfinvoke>` is a standard tag, the tag itself is case-insensitive. However, it sounds like all component argument(s) to `<cfinvoke>` need to have a lower-case filenames in order for calls with irregular casing to succeed consistently. I know you said refactoring is difficult, but this is what I've come up with:

If you have a folder where you specifically keep components, it's trivial to run a shell script in that folder that renames them all to have lower-casing (remove -i if you don't want to be asked if you're sure each time):

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

If you don't have the components all in the same folder, try it from the top directory.

Let me know if you were able to give this a shot!

Problem

I've installed apache2 and ColdFusion 9 on an Ubuntu 12.04 box. I've already use the CheckSpelling mod in Apache to disable case-sensitive URLs and other paths that Apache is responsible for. Now, keep in mind, I'm working with about 4GB of legacy code (about 6 years worth) and very little is up to convention. The coders before me were not concerned with case sensitivity, seeing as how the application was hosted on a Windows Box. For the most part, ColdFusion is behaving with `<cfinclude>` and `CreateObject`, but it seems like `<cfinvoke>` (which is used quite often in the codebase) is still case sensitive. Now, I've tried the method of moving the code onto a vfat partition, but what I ran into was a whole bunch of encoding issues with filenames (we deal with foreign companies and get a lot of special characters). Deleting and/or renaming the files would be cumbersome, as most are also referred to in the MySQL database, and would have to be modified there as well. So recoding is somewhat of a nightmare. So, I'm curious if ColdFusion has any special flags when running on Linux to be case insensitive, or if there is another method for making this all come together? EDIT I'm Sorry, I was mistaken. `cfinvoke` seems to work ok. I'm choking on `cfobject`

Original source