If you're trying to protect data-in-transit between two servers, please just use SSL/TLS certificates instead of rolling a new encryption scheme. Note that SSL/TLS technically uses symmetric encryption as well, but the shared session keys are encrypted with asymmetric keys during the initial exchange (hence the need for certificates).
One of the huge benefits of SSL/TLS is that it guarantees authentication and data integrity too, not just encryption; depending on choice of ciphersuite, it can also guarantee forward secrecy (such that an attacker who gets the private keys in the future can't decrypt past messages). For instance, if you use mcrypt in AES-CBC mode without message authentication, you're open to malleability attacks similar to http://www.jakoblell.com/blog/2013/12/22/practical-malleability-attack-against-cbc-encrypted-luks-partitions/. And if you didn't initially establish the shared secret over an SSL/TLS-protected channel anyway or use other means of authentication, you're vulnerable to a MITM attack.
SSL/TLS is the most-used form of encryption for server-server or client-server communication, and as such, its security promises (and pitfalls) are well-documented. I'm not familiar with PHP, but ith seems like this does everything you would need: http://www.php.net/manual/en/book.openssl.php.