October 27, 2012
【追記】10/28 16:00ぐらいにこちらTwitter api側で復旧したようです!週末対応されたTwitter関連サービス関係者各位お疲れ様でした!
現時点でTwitter apiで以下の障害が起きているようで、一部の環境で影響を受けているようです。
411 Length Required for https://api.twitter.com/oauth/request_token
上記のスレッドによると、Twitter apiへのリクエストの際に411エラーが返ってくるようです。
411エラーというのはContent-Lengthのサイズが適切ではないということだそうですが、上記スレッドでの解決法では、ぬわんとリクエストするContent-Lengthを0にしたら通ったよとのこと。。。
他に解決法があるのかもしれませんが、とりあえず僕がやった手をメモです。
peclのoauthライブラリをもし使ってる人がいる場合は、通信処理はpeclライブラリの中に隠されて自動化されてるので、こちらからContent-Lengthを変えることはできません。
ので、試しに元のソースコードをいじってみたのでメモしておきます。
peclのoauth-1.2.3で試しました。
oauth.c 1326行目あたりにContent-Lengthの設定を追加
curl_headers = curl_slist_append(curl_headers, "Expect:");curl_headers = curl_slist_append(curl_headers , "Content-Length:0"); <-追加
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, curl_headers);
peclのビルドを念のためにメモしておくと
phpize -clean
phpize
./configure
make
sudo make install
です。あ、でも、Twitterのポスト以外は、ちゃんと確認してないので、この情報を使う人はちゃんと基本動作を確認してください。僕もPeclの修正とかあんまりしたことないので、問題が起きそうだったらどなたか是非教えてください。これはcurlの設定を追加してるだけなので問題ないとは思いますけど。
あと、イレギュラーすぎるので、apiによっては通らないケースもあるかもしれません。
理想はPeclの名前を変えて、問題が起きるapi呼び出しだけこっちにした方が良いでしょうけど、ちょっとそこまでpeclライブラリの作り方を把握してない。
おそらくTwitter側が直ったら新たな障害の火種になるので、すぐに元に戻しましょう。
ホント、こんな修正させないでTwitterさん。。。
あとね。僕が把握してる限り、この障害は土曜日の日本時間AM6時半ぐらいから発生してたようだけど、あちらは金曜の午後ですかね。金曜日の夕方にリリースすんなー。