IOHelper::fileExists always false
IOHelper::fileExists() will return false for a few reasons:


Either PHP's realpath or is_file returns false. i.e. the given path doesn't exist or PHP doesn't have executable permissions on the folders leading up to that path or read permissions on the file itself.
You're using a case-sensitive file system and you're passing in a different cased path/filename than what's on the file system.