1. TOPTOP
  2. Webサービス

Wockerの時刻設定はどのファイルで行うか?Twitterから時刻のズレを指摘される

|

Wapuu

いま、PHPのローカル開発環境として使用している、Wockerの時刻設定をしたいと考えています。というのはドットインストールのレッスンで、PHPでTwitterログインを実装しよう (全23回)(新しいタブで開く)(動画はプレミアム会員のみ閲覧可)を見ながら、TwitterのOAuth認証によるログイン画面を実装すると、時刻のズレを指摘されるからです。

Twitterからの指摘

Twitter_Connect

http://wocker.dev/dotinstall/tw_connect_php_2/ という画面を作成して、”Sign in with Twitter”をクリックすると、

wocker_dev_dotinstall_tw_connect_php_2_login_php

http://wocker.dev/dotinstall/tw_connect_php_2/login.phpに遷移しますが、エラーが返ってきます。

{"errors":[{"code":135,"message":"Timestamp out of bounds."}]}

Twitterの開発者コミュニティーの書き込み(新しいタブで開く)を確認すると、Twitterのサーバーはデータ取得の要求をされた時に、要求側の時刻が実際の時刻とズレているときに返されるとのことです。

Wockerの時刻設定はどこから行うのか?

おそらく、ローカル開発環境として使用しているWockerの時刻設定を変更しなければならないのでしょう。時刻設定として思いつく設定ファイルは、以下の3つです。

1./etc/php.ini

wocker ~ $ wocker start php-study(PHPアプリを開発しているコンテナ)
wocker ~ $ wocker exec -it php-study bash
# cd /
# vi etc

wocker_php_ini_2

Wocker内部に入り込んで、ルートからetcディレクトリに入り込んでも、そもそもphp.iniがありません。

2./etc/localtime

# vi /etc/localtime

wocker_etc_localtime

次にCentOSのタイムゾーンを設定しているファイルを確認しました。ところが、文字化けしているのでしょうか?下手に手出しできない雰囲気が漂っています。

3./usr/share/zoneinfo/Japan

# vi /usr/share/zoneinfo/Japan

wocker_:usr:share:zoneinfo:Japan

日本のタイムゾーンを設定しているファイルをのぞいてみました。これまたうかつに手を出せません。WockerをPHPのローカル開発環境として使っている場合、どこから時刻の設定を行えばよいのでしょうかね?

追記(2016/06/20)

後日この問題は解決しました。以下のコマンドでvagrantをリロードすると、再度、時刻が設定されます。その設定され直した時刻になると、Twitterとの接続が可能になります。

wocker ~ $ wocker stop
wocker ~ $ exit
$ vagrant halt
$ vagrant reload

twitter_oauth

ちなみに時刻のズレを確認するためには、3つの時刻を確認する必要があります。

ローカルマシンの時刻
WockerVMの時刻
Wockerコンテナの時刻

それぞれコマンドで表すとこうなります。

$ date
wocker ~ $ date
wocker ~ $ docker exec php-study(使用しているコンテナ名) date

関係者のみなさまありがとうございました!

〔参考サイト〕