0

我将 drupal 7 与 Media Youtube 模块一起使用。该模块调用 youtube oEmbed API。

这是模块将调用的 url 示例: http ://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI

在我的桌面上,这会返回一个 json 文件,一切正常。但是在我网站的服务器上,我收到 503 服务不可用错误。实际上我首先得到一个 302 not found,说 url 已经移动,然后是 503 错误:

这是我手动执行 wget 时得到的结果:

wget http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI
--2014-09-28 21:55:49--  http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI
Resolving www.youtube.com (www.youtube.com)... 2a00:1450:4007:808::1004, 173.194.40.131, 173.194.40.132, ...
Connecting to www.youtube.com (www.youtube.com)|2a00:1450:4007:808::1004|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://ipv6.google.com/sorry/IndexRedirect?continue=http://www.youtube.com/oembed%3Furl%3Dhttps://www.youtube.com/watch%3Fv%3DYZqqD1Rv5BI [following]
--2014-09-28 21:55:49--  http://ipv6.google.com/sorry/IndexRedirect?continue=http://www.youtube.com/oembed%3Furl%3Dhttps://www.youtube.com/watch%3Fv%3DYZqqD1Rv5BI
Resolving ipv6.google.com (ipv6.google.com)... 2a00:1450:4007:808::1008
Connecting to ipv6.google.com (ipv6.google.com)|2a00:1450:4007:808::1008|:80... connected.
HTTP request sent, awaiting response... 503 Service Unavailable
2014-09-28 21:55:49 ERROR 503: Service Unavailable.

任何帮助将不胜感激。提前致谢

4

2 回答 2

1

我遇到了同样的错误,但不幸的是,问题不在于模块(我将能够修复它并为模块维护者提交补丁)。

正如您已经测试过的那样,即使是简单的 wget 也会出现同样的问题,而且它来自于它使用 IPv6 的事实。如果您可以强制通过 IPv4 处理对 youtube 的请求,问题将得到解决。但这只是一种解决方法,而不是真正的修复。

于 2014-09-29T15:26:14.713 回答
0

我找到了一种在 PHP 中强制 IPv4 DNS 解析的方法:

$url = 'http://www.youtube.com/oembed?format=json&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DZVSd5aSXlQ0';
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$json = curl_exec($c);
$status = curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);

这个解决方案实际上对我有用。

于 2014-10-18T16:09:06.833 回答