【问题标题】:file_get_contents failingfile_get_contents 失败
【发布时间】:2011-08-21 07:13:56
【问题描述】:

我在 tumblr 上有一个博客,我正在尝试通过 php 和 tumblrs api 访问它。

api 端点是:

http://blog.example.com/api/read/json?start=0&num=10&debug=1

这似乎工作正常。

但是,当我这样做时:

$result = file_get_contents("http://blog.example.com/api/read/json?start=0&num=10&debug=1");

print_r($result);

浏览器输出

Warning:  file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /path/to/file/test.php on line 5

Warning:  file_get_contents(http://blog.example.com/api/read/json?start=0&num=10&debug=1) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /path/to/file/test.php on line 5

Curl 也会失败。

想法?

我认为这与我的博客位于子域这一事实有关。我这么说的原因是,如果我在位于根 url 上的博客上运行相同的脚本,它就可以正常工作。有没有正确的方法来转义子域?

【问题讨论】:

  • curl 失败的信息是什么? (使用curl_error()输出)
  • 这意味着willium.com 很可能没有被您运行此脚本的机器解析。
  • 我认为这与我的博客位于子域中这一事实有关。我这么说的原因是,如果我在位于根 url 上的博客上运行相同的脚本,它就可以正常工作。有没有正确的方法来转义子域?
  • 您的域有它吗?或者,如果您使用 BLOGNAME.tumblr.com 会怎样。它会起作用吗?
  • 我无法访问该网址。也许DNS坏了?固定IP地址呢?

标签: php api curl file-get-contents tumblr


【解决方案1】:

此代码失败,因为 DNS 查找失败。这可能是因为您的服务器无法联系其名称服务器。或者是因为blog.example.com 不存在(它在我的浏览器中失败,所以它应该到处都失败)。您可以尝试将您的名称服务器更改为 google 的:8.8.8.8 和 8.8.4.4。这些 DNS 服务器运行良好。

【讨论】:

  • 如果你认为我拥有 blog.example.com 你疯了 ;)
  • @willium 是的,但是您是否要抢夺一个不存在的域?因为您的服务器无法解析域名。真的很明显。
  • 要确认问题是域不存在(应该存在,但可能存在更多问题),请尝试在 google.com 等内容上执行 file_get_contents。如果无法解决,则说明您的 DNS 存在问题。但是,我认为更可能的问题是 blog.example.com 根本不存在。如果您使用不同的域并为此问题更改了它,那可能不是问题。
  • @FuzziBear google.com 上没有任何东西,它重定向到 www.google.com。 curl 将重定向。您不应该像这样使用 file_get_contents(),它不安全且设计不佳。
【解决方案2】:

新的 Tumblr API:http://www.tumblr.com/docs/en/api/v2

如果您的 tumblr 帐户拥有您的域,它就可以工作。一个example

【讨论】:

  • 我知道,这很奇怪,旧的 API 可以工作,但是当我从脚本中使用它时却无法工作。很奇怪。尽管如此,这行得通!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
相关资源
最近更新 更多