One of the things I wish I had found in Google faster when trying to figure out why PHP script refuses to connect to remote MySQL server issuing an error
SQLSTATE[HY000][2003]Can't connect to MySQL server on 'xxx.xxxx.xxx.xxx' (13)
I am able to connect from local shell, so first thought was if something wrong with recent Zend Framework upgrade, but after a while I figured out that answer is very simple – SELinux was blocking remote connections from PHP scripts executed by Apache web server. The error code (13) at the end of error message means “permission denied”, so that’s the indication to see if you have similar issue or not.
Anyway, login as root and do
setsebool -P httpd_can_network_connect=1
to make it work.
Of course, think twice because you make web server a bit less secure, so don’t do that unless you are sure you need it.