将PHP mysql库从mysqlnd更改为libmysql(用于SSL连接)

时间:2011-04-23 09:19:11

标签: php mysql ssl php-5.3

我在Windows机器上使用最新的PHP 5.3.6。我配置了远程MySQL服务器以仅接受SSL连接。连接可以正常使用MySQL命令行客户端:

mysql.exe -u user -h mysql.example.com -P 3307 --ssl-ca = C:\ www \ mysql.example.com.crt -p

但是,我无法通过PHP连接。根据{{​​3}},这是由于PHP 5.3默认使用较新的MySQL Native Driver(mysqlnd)。此驱动程序不支持SSL。

我无法相信他们允许这样的回归漏掉(SSL是为什么有人会使用mysqli而不是mysql扩展的少数几个原因之一)而没有提供一种简单的方法来恢复到旧的libmysql驱动程序它支持SSL。

在php.net上,没有关于如何执行此操作的指示。此外,重新编译不是一种选择。我的问题是:如何轻松完成?

1 个答案:

答案 0 :(得分:0)

  

在php.net上,没有关于如何执行此操作的指示。此外,重新编译不是一种选择。

为了创建mysql,mysqli和PDO扩展,必须针对MySQL接口库编译PHP。你不能简单地换掉那个底层库。为了使用另一个库,比如MySQL提供的库,你必须重新编译PHP。

切换到本机库的原因是MySQL提供的库是在GPL下发布的。 PHP许可证与GPL不兼容,因此根据Thou Shalt Not列表分发针对GPL代码编译的PHP二进制文件。你可以感谢和/或诅咒MySQL人们这一点愚蠢。只有白痴和邪恶的人才会在GPL下发布库代码

< /咆哮>

如果你不能重新编译,你可能会运气不好。请记住,Microsoft提供VC9(Visual Studio 2008)at no cost,因此如果需要,能够执行重新编译。

您可能希望探索与MySQL服务器的安全连接的其他选项。

如果远程计算机是Linux或基于Unix的,则使用SSH隧道(端口转发)可能对您有用。有numerous SSH clients for Windows可以做到这一点。

您还应该考虑OpenVPN,这是一种基于SSL / TLS构建的VPN解决方案。您可以使用它在两台计算机之间建立安全连接,而无需担心协议级安全性。