沢田内科医院HPで、「トップページ」の「カレンダー」と、「診療時間と休診日」ページの「診療時間」で、現在の日付を表示しています。
しかし、ここ最近、早朝にHPを表示すると、前日の日付となっていました。
どちらのページも、PHPファイルで、サーバーの時計を参照し、日付を表示しています。
そこで、レンタルサーバの事業者(TOK2PRO)に、メールで問い合わせてみたのですが、
・・・
対象サーバーの時間は正常であることを確認いたしました。
※自動同期によりサーバー時間を設定させて頂いております。
・・・
とのこと。
試しに、PHPファイルの内容を見直し、日付だけでなく時刻まで表示させてみました。
(9行目)
<head> <meta charset="UTF-8"> </head> <div style="font-weight: 600; text-align: center;"> <?php $yobi = array("日","月","火","水","木","金","土","日"); echo "本日: ".date("Y年m月d日")."(".$yobi[date("N")]."曜日)"; echo "<br>"; echo date("Y年m月d日 H:i:s"); ?> </div>
結果、実際の日時が、
2015年03月25日 08:47:49
に対し、today.phpが表示した日時は、
2015年03月24日 23:47:46
(秒は、ブラウザ表示からキャプチャ操作までに進行。)
・・・そう、ここでピーンときました。
タイムゾーンの分、ちょうど9時間遅れているではありませんか。
(日本標準時(JST)は、協定世界時(UTC)を9時間進めた標準時。UTC+9と表現。)
おそらく、ここ最近、TOK2PROさんがPHPプログラムの更新でもして、php.iniファイルにタイムゾーン設定が抜けているものと推測されます。
当方の自宅サーバのphp.iniは、タイムゾーン設定をしてあるので、カレンダーの日付は遅れたりしていません。
※過去記事「FTPクライアントWin版FileZillaでHP転送」参照。
「date.timezone = Asia/Tokyo」を設定しています。
本日、php.iniのタイムゾーン設定依頼を、TOK2PROさんにメールしておきましたが・・・。
・・・もう少し、調べたら、php.iniを変更できない場合の対処法を発見。
PHPファイル内に以下の記述をすれば良いようです。
(6行目)
<head> <meta charset="UTF-8"> </head> <div style="font-weight: 600; text-align: center;"> <?php date_default_timezone_set('Asia/Tokyo'); //2015.03.25 追加 $yobi = array("日","月","火","水","木","金","土","日"); echo "本日: ".date("Y年m月d日")."(".$yobi[date("N")]."曜日)"; /* 2015.03.25 追加・・・確認時コメントアウト echo "<br>"; echo date("Y年m月d日 H:i:s"); */ ?> </div>
右の画像は、上記ソースではコメントとしている部分(9〜12行目)を、コメント解除して実行したものです。
ちなみに、サーバphp.iniのタイムゾーン設定「date.timezone = Asia/Tokyo」と、PHPファイルのタイムゾーン設定「date_default_timezone_set(‘Asia/Tokyo’);」の両方が記述されていても、正常な時刻を表示しました。(自宅サーバ環境で確認済み。)
・・・これにて一件落着。