0

ほんの一握りのトライアルユーザー(20人中3人)が特定のページのコンテンツを見ることができないベータ版のWebサイトを管理しています。すべてのユーザーは、異なるネットワーク上で異なるコンピューターを使用しています。3人のユーザーがJavaScriptを有効にしていることを確認しましたが、それでも問題は解決しません。

深く掘り下げてみると、コンテンツの不足はcURL呼び出しが失敗したことが原因のようです。これらのユーザーの場合、curl_exec()が失敗しているか、データを返さないように見えます。これにより、nullの結果が返されるため、情報が表示されません。これらの3人のユーザーの場合、この問題は3つの別々のブラウザー(Chrome、IE、Firefox)に存在します。異なるネットワーク上の複数のコンピューターからアカウントにログインして応答を得ることができるため、ユーザーIDなどのユーザー設定によるものではないことを確認しました。

犯人は彼らのマシン/ネットワークがSSL証明書を処理する方法かもしれないと思います。私はSSL証明書に精通していないので、いくつかの分野で私の無知や明白な間違いを許してください。ただし、削除のプロセスにより、これら3人のユーザーのネットワーク/マシンによってWebサイト証明書が拒否されていると思われるため、cURL呼び出しは失敗します。私の質問は、これが事実であることをどのように確認できるか、もしそうなら何が原因であるか、そしてどのように問題を解決できるかということです。

Webサイトは、Zendframeowrkを使用してPHPで構築されています。関連するコードは次のとおりです。

$ssl_cert = ZendGA_Global::getOption('curl_ssl_certificate');
$ssl_verify_peer = ZendGA_Global::getOption('curl_ssl_verify_peer');
$ssl_verify_host = ZendGA_Global::getOption('curl_ssl_verify_host');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// related to SSL cerificate verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl_verify_host);
curl_setopt($ch, CURLOPT_CAINFO, $ssl_cert);


//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

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

4

1 に答える 1

0

私は問題を理解しました:cURL呼び出しが失敗しましたが、それはURLが正しくなかったためであり、これは他の場所で発生した問題でした。URLはベースURLといくつかのパラメーターから作成されますが、ベースURLを取得する関数は、ドメイン名ではなくホスト名を取得していました。一部のユーザーはVPN経由でログインするため、ホスト名の読み取りがわずかに異なり、URLが間違っていました。OK、それはかなり複雑でしたが、問題は解決されました。:-)

于 2012-07-13T21:31:36.443 に答える