我正在Windows框上使用最新的PHP 5.3.6。我配置了一个远程MySQL服务器,使其只接受SSL连接。与MySQL命令行客户端连接良好:
mysql.exe -u用户-h mysql.example.com -P 3307 --ssl=C:\www\mysql.example.com.crt -p
但是,我不能通过PHP连接。根据PHP文档,这是由于PHP5.3默认使用更新的MySQL本机驱动程序(mysqlnd)。此驱动程序不支持SSL。
我不敢相信,他们允许这种倒退(SSL是某些人使用mysqli而不是mysql扩展的少数原因之一),而不提供一种简单的方法来恢复到支持SSL的旧的libmysql驱动程序。
在php.net上,没有迹象表明如何做到这一点。此外,重新编译也不是一种选择。因此,我的问题是:如何容易做到这一点?
发布于 2011-04-23 19:47:00
在php.net上,没有迹象表明如何做到这一点。此外,重新编译也不是一种选择。
为了创建mysql、mysqli和PDO扩展,必须对MySQL接口库进行编译。您不能简单地交换底层库。为了使用另一个库,比如MySQL提供的库,您必须针对它重新编译PHP。
切换到本机库的原因是MySQL提供的库是在GPL下发布的。PHP许可证与GPL不兼容,因此分发针对GPL代码编译的PHP二进制文件在Thou列表上非常高。你可以感谢和/或诅咒MySQL的人的这一点完全愚蠢。只有白痴和坏人在GPL下发布库代码。
如果你不能重新编译,你可能是运气不好。请记住,微软提供了VC9 (Visual 2008) 不计代价,因此如果需要,您应该能够执行重新编译。
您可能希望探索到MySQL服务器的安全连接的其他选项。
如果远程计算机是Linux或其他基于Unix的机器,那么使用SSH隧道(端口转发)可能对您有用。有一些许多用于Windows的SSH客户端可以做到这一点。
您还应该考虑OpenVPN,一种构建在SSL/TLS之上的VPN解决方案。您可以使用它在这两台机器之间建立安全连接,而无需担心协议级别的安全性。
https://stackoverflow.com/questions/5763377
复制相似问题