Anytime I have to trouble shoot "Access Denied" errors on Samba, there are three places I typically check to ensure the user has proper access. In this case, #3 might help you the most:
1.) If your environment allows it, call "setenforce 0" to test disabling SELinux. There have been many times I've troubleshot permission issues extensively only to find SELinux is preventing access. If this seems to be the problem, consider writing a conditional statement to allow the access that's needed.
2.) The Filesystem - log into the Linux box as the user and try to navigate to the path the share is pointed at. Once there, create a file, and create a directory. If you can do this without a problem, then there's a fairly good chance it's a Samba permissions problem.
3.) Samba - Samba generates a lot of logs depending on the log level. I've found log level 3 is usually sufficient, but if you need to, set "log level = 4" in smb.conf.
Inside the samba log directory, you should find a log for each host that has attempted to connect to a share. The host will be identified by either IP address or host name.
Tail the log for the host you are trying to connect from as you attempt whichever operation results in a "Permission Denied" error. You see very quickly where the users permissions are breaking down, whether its an incorrect password, a valid user exception, or a file system access denied error.
If this fails, you might try creating a wide open share and slowly restricting it more and more until access breaks.
And finally, in your specific case, you might double check the credentials Apache is using to access the Samba share ;)