【问题标题】:apache/php/mysqli connection to remote db fails but IIS and MySQL workbench connectsapache/php/mysqli 连接到远程数据库失败,但 IIS 和 MySQL 工作台连接
【发布时间】:2011-03-22 21:44:41
【问题描述】:

我正在本地开发并连接到远程 mysql 服务器。我一直在我的本地机器(WinXP)上使用 IIS,但现在改用 Apache。迁移到 Apache 后,我的大部分 PHP 站点都可以正常运行。

但是 - 当 mysqli 尝试连接到远程数据库时,我得到:
(HY000/2003):无法连接到 '... 上的 MySQL 服务器: **' (10060)

我知道服务器正在接受来自我的 IP 的连接,因为我能够使用 MySQL Workbench 从本地计算机连接到同一台服务器。

我也知道我与 mysqli 一起使用的数据库连接详细信息是正确的,因为我在 IIS 上运行时使用了相同的详细信息而没有问题,发生的唯一变化是我从 IIS 移动到 Apache。

当我的本地防火墙被禁用时,这个问题仍然存在。

我对 Apache 的使用经验很少,是否有我遗漏的配置设置阻止我连接到远程数据库,或者某些东西正在破坏/隐藏我正确 IP 的报告?

感谢您的帮助,我在这里抓着稻草......

【问题讨论】:

  • 如果您单独安装了 Apache,您可能没有正确安装 MySQL 模块。安装 WAMP 或 XAMP,它将为您执行 Apache、PHP、MySQL! :)
  • 您能展示一下您使用 mysqli 连接到 MySQL 的 PHP 代码吗?
  • $mysqli_connection = new mysqli($db_host, $db_user, $db_pwd, $_db); 是我使用的代码。
  • 感谢 WAMP/XAMP 的建议,我已经考虑过了,但会先等待看看是否有更简单的修复方法——我的本地机器上不需要 MySQL

标签: php apache mysqli


【解决方案1】:

当远程 MySQL 服务器没有响应时发生错误 10060。

可能是与远程计算机上的端口 3306 的连接被阻止。可能是托管 PHP/Apache 的系统具有阻止传出连接的软件防火墙,或者该防火墙不允许 PHP/Apache 打开网络连接。

【讨论】:

  • 感谢您的回答 - 正在使用不同的端口,但我可以确认它没有被 MySQL 服务器阻止,因为我可以通过 MySQL Workbench 使用相同的详细信息和相同的机器进行连接。我还尝试在禁用本地防火墙的情况下进行测试 - 不高兴。
  • 您是否能够在托管 Apache 的机器的命令行中使用 PHP 进行连接?
  • 我从未在命令行中使用过 PHP。请问我该如何处理,是否需要创建一个 .php 文件并执行它?
  • 我想我知道我哪里出错了。使用 IIS,我有 PHP 5.3(用 VC9 编译),但我看到对于 Apache,我需要使用 5.2(VC6)。我在旧的 5.3 包上提取了 5.2 包,我不知道为什么要这样做,而不是找出如何正确降级,因为我不会梦想在安装任何其他软件时这样做。我意识到我在这里创建了一个相当混乱的第一个帖子,并且不确定是否有人会从中受益,但我认为我能做的最好的就是将其投票为最佳答案,因为该过程至少帮助我找出了问题所在。感谢您的帮助!
  • 已经安装了 VC9 Apache,回到 PHP 5.3/VC9 并且一切似乎都运行良好 - 再次感谢您的帮助 :)
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2016-01-01
  • 2020-06-15
  • 2015-05-09
相关资源
最近更新 更多