为什么我从本地php app引擎开发到cloud sql的连接使用ipv6失败?

时间:2015-11-28 17:22:12

标签: php mysql google-app-engine mysqli google-cloud-sql

所以我想使用它的免费ipv6地址连接到谷歌云sql实例,而不是购买ipv4地址。为此,我看了ip我的ipv6地址并允许它。我也查了我的路由器ipv6前缀并允许(afaik应该允许我的家庭网络中的所有电脑访问sql实例)。

以下代码会产生问题:

$servername = "2001:6532:1234:1:6a4f:e1d7:5d69:52a3";
$username = "looooool";
$password = "superSecretStuff";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

该代码会生成此错误:

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8
Connection failed: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.

对不起,错误信息是德语,但我不知道在哪里我会改变它。第8行也是$conn = new mysqli($servername, $username, $password, $dbname);上的行。我已经改变了ip地址,所以如果它看起来很奇怪那就是为什么。希望你能帮帮我。

Ninja编辑:如果我从谷歌获得IPv4地址,它可以正常运行。

2 个答案:

答案 0 :(得分:0)

我发现一些ISP(互联网服务提供商),特别是那些专注于住宅用户的互联网服务提供商,对于IPv6地址的分配和持久性以及对其客户的范围非常苛刻 - 而使用IPv4,它更容易知道一个站立(通常是一个可选的费用来支付持久的静态IPv4地址 - 如果你不支付这笔费用,那么默认情况下你会得到一个动态的IPv4地址,你知道 负责随时改变)。我已经通过使用诸如whatismyip.com之类的多种服务来验证这种不当行为。因此,我无法在家庭网络(通过AT& T)中可靠地使用Cloud SQL,而我在办公室没有问题(静态IP地址,v4或v6都可以正常工作)。

您可能想在serverfault上再次提出这个问题,因为它完全是关于网络管理,完全不是关于软件开发(特别是关于Cloud SQL) - 还有关于哪些ISP可供您使用的所有详细信息,并且关注“如何获得可预测的,非流动的IPv6外部可见地址”与给定的ISP(AT& T,我放弃了这个任务,至少目前如此)。

答案 1 :(得分:0)

所以我理论上答案只是将$servername = "2001:6532:1234:1:6a4f:e1d7:5d69:52a3";更改为$servername = "[2001:6532:1234:1:6a4f:e1d7:5d69:52a3]";,即如果您的网络或ISP没有像我的那样对您的IPv6地址做些疯狂的话。