質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.02%

  • PHP

    17758questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5986questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Linux

    3191questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2349questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

仮想 centos7 wordpress 時間がずれる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 284

leo

score 2

前提・実現したいこと

Wordpressの管理画面の一般設定で世界標準時 (UTC) が日本時間になっているのをきちんとUTC時間にしたい。

WORDPRESSの一般設定のUTCは具体的にどこのデータを引っ張ってくるのでしょうか。
ご存知の方いらっしゃいましたら、ご教授いただけますと幸いです。

発生している問題・エラーメッセージ

WordPressの投稿時間がずれているので、確認したところ、
管理画面の一般設定で「タイムゾーン:東京」になっているにもかかわらず、世界標準時 (UTC) が東京の時刻になっており、現地時間はさらに+9時間を指している状態です。

試したこと

真っ先に、サーバーの時刻設定を疑って確認しましたが、問題なかったです。

# timedatectl status(実際の時間2017-12-16 15:40:08)
----------------------------------------------------
      Local time: 土 2017-12-16 15:40:08 JST
  Universal time: 土 2017-12-16 06:40:08 UTC
        RTC time: n/a
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
----------------------------------------------------

次にphp.iniの記述を疑いましたが、きちんとAsia/Tokyoが指定されてました。

# vi /etc/php.ini 
----------------------------------------------------
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo
----------------------------------------------------


念のため、PHPのコマンドでデータ取得しても日本時間を取得できてました。

# echo '<?php echo date_default_timezone_get(); ?><?php echo date("Y/m/d H:i:s "),"\n"; ?>' | php
----------------------------------------------------
Asia/Tokyo2017/12/16 15:41:07 
----------------------------------------------------

仮想コンテナを別で作成して、CENTOS7,PHP5.6,Mysql5.6,httpd2.4.6の環境でwordpressをインストールするとデフォルトの設定で「タイムゾーン東京」で「現地時間」が日本時間を指してました。

このため仮想サーバーホストの問題ではなく、WordPressもしくはPHP、Apache,mysql等あたりに原因があるのではないかと考えておりますが、思いつくところで、なにが原因でUTCが現地時間になっているのかわからない状況です。

WORDPRESSの一般設定のUTCは具体的にどこのデータを引っ張ってくるのでしょうか。
ご存知の方いらっしゃいましたら、ご教授いただけますと幸いです。

補足情報(言語/FW/ツール等のバージョンなど)

openvz仮想コンテナ
OS:CentOS Linux release 7.4.1708 (Core) 
カーネル:openvz-042stab123.2-amd64
PHP:5.6.32 
mysql:5.7.20
OpenSSL:1.0.2k-fips
httpd
Server version: Apache/2.4.29 (CentOS)
Server built:   Oct 23 2017 14:34:32
Server's Module Magic Number: 20120211:68
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     event
threaded:     yes (fixed thread count)
forked:     yes (variable process count)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

9時間ズレる仕様なのでPHPの標準的な出力方法だと9時間プラスして出力する以外に方法はありません。
ですのでWordPressの仕様に沿った方法を使ってください。

// 9時間ズレた日時
echo date( 'Y/m/d H:i:s' );

// 正確な現在日時
echo current_time( 'Y/m/d H:i:s' );

// 正確な投稿日時
echo get_the_date( 'Y/m/d H:i:s' );

などなど


追記
wp-settings.phpdate_default_timezone_set( 'UTC' );です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/16 16:57

    Space-Monkeyさん、
    今回もご回答くださりありがとうございます。

    ご回答いただいている関数はどこに設定すると、一般設定のUTC時間がかわりますでしょうか?

    ホスト機が問題ないことを切り分けるために、
    同じ仮想ホストからコンテナ作成し、別途CENTOS7(ミドルウェアは違います)を入れて検証したところ、そちらではきちんと一般設定のUTCの時刻がUTCのものとなっておりました。

    今回http2化したのですが、それにあたり、いろいろいじくってしまったのが原因なのかなとおもっておったりするのですが、そもそもWordpressの管理画面の一般設定のUTC時刻はどういった仕組みで表示されているのでしょうか。

    よろしければご回答いただけますと幸いです。
    よろしくお願いいたします。

    キャンセル

  • 2017/12/16 16:58

    追加のご回答ありがとうございます。
    ご回答いただいた関数の設定箇所につきましては把握できました。

    キャンセル

  • 2017/12/16 17:52

    すみません、質問に対し目茶苦茶な回答してました(;^_^A

    どこから時間を引っ張ってきているのか?ということでしょうか?
    管理画面にアクセスすると裏でwordpress.orgと通信していますが、多分そこではないと思いますが詳しく知りません。
    ちょっと調べてみますがアテにしないでくださいね。

    キャンセル

  • 2017/12/16 18:34

    Space-Monkeyさん
    いつも親身にお答えくださってありがとうございます。

    わかりにくい質問ですみません。
    なぜこのコンテナ環境だけ一般設定のUTC時刻が現地時間になっているのかがわからなくて。
    そもそも、ここのUTC時間はどこを参照しているかがわかれば、解決できるのかなと思いまして、質問いたしました。

    もし何かお分かりになりましたら、教えていただけますと助かります!

    キャンセル

  • 2017/12/17 12:46

    WordPressはサーバーの日時を取得しているのでdateコマンドで適当な日時に変更すると管理画面の日時も変わりました。

    同じような症状かと思います。
    https://wordpress.org/support/topic/utc-time-wrong/
    tzdataパッケージを再インストールする事で直ったそうです。

    # yum reinstall tzdata
    # systemctl restart httpd

    キャンセル

  • 2017/12/17 22:45

    Space-Monkeyさん
    お忙しいところ、お調べいただきありがとうございます。

    # yum reinstall tzdata
    # systemctl restart httpd
    こちらを試してみましたが、やはりWORDPRESSの一般設定のタイムゾーンでは相変わらずUTCが日本現地時間になっておりました。
    ----------------------------------------------------------------------------
    世界標準時 (UTC) は 2017-12-17 22:37:03 です。 現地時間は 2017-12-18 07:37:03 です。
    ----------------------------------------------------------------------------

    サーバーの日時を取得するということですが、timedatectl statusで取得されるUniversal timeではなくLocal timeを見に行っているのが、なぜなのかが不明です。


    # timedatectl status
    -------------------------------------------------------
    Local time: 日 2017-12-17 22:37:30 JST
    Universal time: 日 2017-12-17 13:37:30 UTC
    RTC time: n/a
    Time zone: Asia/Tokyo (JST, +0900)
    NTP enabled: n/a
    NTP synchronized: yes
    RTC in local TZ: no
    DST active: n/a
    -------------------------------------------------------

    ねんのため、dateコマンド実行すると、きちんとLocalTimeをみております。
    # date
    -------------------------------------------------------
    2017年 12月 17日 日曜日 22:38:33 JST
    -------------------------------------------------------


    このため、WordPressの時間は直接サーバーではなく、どこか別のミドルウェアが保持している時刻データを取得しているのではと考えているのですが、やはり直接サーバーの日時データを取得しているのでしょうか?

    キャンセル

  • 2017/12/17 23:04

    試しに出鱈目な日時を設定したらどうなりますか?

    こんな感じで…

    # date -s "11/11 11:11 2017"

    キャンセル

  • 2017/12/18 14:27

    Space-Monkeyさん

    ご連絡が遅くなり申し訳ございません。

    WordPressを入れなおしたら、UTCの設定が正常に読み込まれました。
    お教えいただいた手順で解決した模様です。

    # yum reinstall tzdata
    # systemctl restart httpd

    今回も解決していただき本当にありがとうございます。

    Space-Monkeyさんのようにスキルアップできるよう頑張ってまいりますので、今後ともよろしくお願いいたします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17758questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5986questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Linux

    3191questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2349questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。