0

Media Youtube モジュールで drupal 7 を使用しています。モジュールは youtube oEmbed API を呼び出します。

これは、モジュールが呼び出す URL の例です: http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI

私のデスクトップでは、これは json ファイルを返しますが、すべて問題ありません。しかし、私の Web サイトのサーバーでは、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

私は同じエラーに遭遇しましたが、残念ながら問題はモジュールにありません (私はそれを修正し、モジュール mantainer のパッチをコミットすることができます)。

すでにテストしたように、単純な wget でも同じ問題が発生し、IPv6 を使用していることが原因です。YouTube へのリクエストを強制的に IPv4 経由で処理することができれば、問題は解決します。ただし、これは単なる回避策であり、実際の修正ではありません。

于 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 に答える