2009-07-25 7 views
3

私は最初のphp-openId(Jain)とZendFrameworkを使用して簡単なOpenIdログインを取得しようとしていましたが、どちらの場合も同様の問題。私はhttp://framework.zend.com/manual/en/zend.openid.consumer.htmlのステップ38.2.2の例のZendコードを使用しています。サンプルコードでも、Zend_OpenId_Consumerログイン機能がハングアップする

私は、ログインページが罰金見るが、私は私のOpenIDを入力すると、このコードが実行される: (ISSET($ _ POST [ 'openid_action']場合)& & $ _POST [ 'openid_action'] == " 「& & !空($ _ POST [ 'openid_identifier'])){

echo "New consumer"; 
    $consumer = new Zend_OpenId_Consumer(); 
    echo "Gotim"; 

    if (!$consumer->login($_POST['openid_identifier'])) { 
     $status = "OpenID login failed."; 
     echo "Failure"; 
    } 
    echo "Continuing"; 

ログインコードは、一見$ consumer->ログインへの関数呼び出しでハング。最初の2つのエコーからの出力が表示されますが、失敗または継続が表示されることはありません(エコーなしで、ログインしようとすると500サーバーの内部エラーが発生します)。私が無効なopenIdを入力すると、正しい "OpenIDログインに失敗しました"というメッセージが表示されます。エラーメッセージ。

私がここで馬鹿になっている場合、私はお詫び申し上げます。私は以前のプログラマーで、管理職に昇進しました。私はそれに取り掛かろうとしていますが、私には新しいテクノロジー(PHP、OpenID、Zend Framework)を使用しています。これはちょうどisn今は何の意味もない。

見た目はどこですか?フレームワーク自体が盗聴されているとは思えません(特にJainのopenIdにも同様の問題があった場合は特にそうではありません)。私はウェブホスティングのためにfatcow.comを使用しています。

+0

サーバーのログを確認してください。彼らは/いくつかの追加のエラー情報を提供するかもしれません。 – jason

+0

私はチェックしましたが、残念ながらこの呼び出しで生成されたエラーログはありません。 – papagen0

答えて

0

私はまだ間違ったことを理解していませんが、別のWebホスト(x10hosting.com)で同じコードを実行しようとしましたが、サンプルコードはすぐに機能しました。したがって、私はこれがFatcowウェブホスティングサービスの何らかの制限であると結論づけなければなりません。これはむしろ残念です。私はホストを変えるだろうと思う。

+0

私は別の 'Zend_Http_Client'(OpenIDコンシューマークラスが内部で使用する)アダプタを使い遊びたいと思っています。私の答えを見るhttp://stackoverflow.com/questions/1183276/1201864#1201864 – jason

0

500エラーが発生した場合は、Webサーバーのログに詳細なメッセージが表示されます。サーバーがApacheを実行している場合は、/ usr/local/apache/logs/error_logまたは/ etc/httpd/logs/error_logなどの下にある可能性が最も高いです。私はあなたが共有ホスティングプランにいると仮定しているため、これらのアクセス権はありません。彼らはあなたのためのログを見ることができるように、あなたのウェブホスティング会社に連絡する必要があります。

1

OpenIDプロバイダへの外部HTTP接続をしようとすると、コードが失敗しているようです。これはいくつかの原因によって発生する可能性がありますが、ここにいくつかの提案があります:

  • おそらくプロキシの背後にありますか?
  • そうでなければ、あなたの現在のホストがソケットを使ってリモートサーバに接続できない(url_fopen ini疑似命令)かもしれません。 Zend_Http_Clientのデフォルトアダプタはソケットアダプタです。

だから、私がしようとして推薦するsetHttpClient方法を使用してZend_OpenId_Consumerクラスに異なるアダプターを使用してZend_Http_Clientインスタンスを渡すことです。

  • Zend_Http_Client_Adapter_Socket(デフォルト)
  • Zend_Http_Client_Adapter_Proxy
  • Zend_Http_Client_Adapter_Test
  • Zend_Http_Client_Adapter_Curl

はこのような何かを試してみてください:

は異なるclient adapters利用できるいくつかあり

$client = new Zend_Http_Client(null, array(
    'adapter' => 'Zend_Http_Client_Adapter_Proxy', 
    'proxy_host' => 'example.com', 
    'proxy_port' => 8000, 
    'proxy_user' => 'user', 
    'proxy_pass' => 'pass' 
)); 

$consumer = new Zend_OpenId_Consumer(); 
$consumer->setHttpClient($client); 

実際に問題がある場合は、ISPにプロキシに関するドキュメントが必要です。 プロキシが問題でない場合は、curlアダプターを試して、もう運があるかどうか確認してください。

関連する問題