3

次の Paypal IPN コードを使用しているときに、"getaddrinfo failed" エラーが発生し、スクリプト (PHP 経由で mySQL データベースを更新する) が実行されないことがあります。

コード

// read post from PayPal system and add 'cmd'

$postvars = array();

while (list ($key, $value) = each ($HTTP_POST_VARS)) {
    $postvars[] = $key;
}

$req = 'cmd=_notify-validate';

for ($var = 0; $var < count ($postvars); $var++) {
    $postvar_key = $postvars[$var];
    $postvar_value = $$postvars[$var];
    $req .= "&" . $postvar_key . "=" . urlencode ($postvar_value);
}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: close\r\n";
$fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30);
...
...
...
if (!$fp) {
    echo $errstr . " (" . $errno . ")";
} else {
    // UPDATE DB //
}

エラー

php_network_getaddresses : getaddrinfo failed: Name or service not known (0)

私が得られないのは、これがかなりランダムに発生し、スクリプト全体が正常に機能する場合があるということです。受け取った変数とは完全に独立しているようです。

  • subscr_id
  • txn_type
  • verify_sign
  • などなど...

1 週間前に Paypal のサポートに連絡しましたが、今のところ返信がありません。

どんな助けでも大歓迎です。:)

PS: エラーが 1 行だけから発生していることに気付きました。

$fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30);
4

1 に答える 1

0

これはまだ起こっていますか?
原因は、www.paypal.com を解決できないことです。デフォルトのネームサーバーを介して www.paypal.com を手動で解決できるかどうかを確認してください。これが機能しない場合は、ネームサーバーのプロバイダーと連携するか、別のプロバイダーに切り替えてください (可能な場合)。

于 2013-01-05T12:11:07.050 に答える