I think you need to verify the permissions of each folder involved in the path before you get to the file itself.
Many Linux distributions default the permissions to (0700) (meaning just the user itself is allow to read/write/execute), to each folder inside the
/home directory, which means that if user
my_user has a file
/home/my_user/dir1/dir2/file1.txt with the permissions
0755 the user
http can't stat it because the default permissions I mentioned above will prevent it.
My guess is that when you executed the
ls -al /home/my_user/dir1/dir2/file1.txt was with a user other than
http and that user could actually read the file. If that is the case, you have to correct the permissions on all the directories with tools like
setfacl if you want to be more specific.
I hope this helps.