私はYii 1.1とビューを持つウィジェットを持っています。私はfile_get_contents
という外部アドレス(httpsからのhttps)のPHP関数を呼び出しています。私はhttps://api.ipinfodb.com/v3/ip-city/...
と呼んでいます - 彼らはIPアドレスで座標を提供します。それは503エラーで失敗します:file_get_contentsはYiiウィジェットのビューでは機能しません。
failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable
しかし、それは完全に静的ビューのページで動作します。 これは私の開発者マシンのどこでも動作します。 サーバ上のphp.iniにallow_url_fopen = On
があります。
何が間違っている可能性がありますか?
ない、それを解決するために、ここで十分な情報を。私の勘違いは、あなたが 'file_get_contents'のためにデフォルトで空になっているユーザエージェント文字列を設定する必要があることです。私はその理由で多くのAPIの拒否リクエストを見てきました。しかし、503は送信する間違った応答コードなので、APIプロバイダはそのシナリオに準拠していないようです。しかし、これは無効なAPIキーエラーのために200を無効に送信したことを考慮している可能性があります - 401 –
OK、私はちょうど 'stream_context_create'でヘッダオプションにユーザエージェント文字列を設定しました。私が言ったように、静的なPHPページからそのAPIを呼び出すと、すべてがうまくいきます。ヘッダーは私がウィジェットの視点から行うのと同じです。どのような情報が必要ですか?また、ここに独自のapiキーを作成することもできます:http://ipinfodb.com/register.php –