Got it fixed. I tried on a different box without doing a thing and it worked first go. I had the file I was trying to access owned by root and didn't set any permissions. Looking for what was different it turned out to be SELinux. I have no idea what that is but disabling it fixed the problems. I'm guessing it is some sort of security 'feature'?? Calling getenforce told me it was on and I could use setenforce to make it permissive.
me@host# getenforce
Enforcing
me@host# setenforce Permissive
The other option is to disable it in the config file /etc/sysconfig/selinux. I'm guessing a restart of something is required after that.
SELINUX=disabled
Thanks everyone for the replies.