PHPのdate()関数で現在時刻が表示されない問題の原因と解決方法

このQ&Aのポイント
  • PHPのdate()関数を使って現在時刻を表示しようとしたら、0としか表示されない問題が発生しました。
  • 原因はphp.iniファイルのタイムゾーン設定がデフォルトのままだったためでした。
  • 解決方法は、php.iniファイルの[date]セクションのdate.timezoneの設定を修正するか、date_default_timezone_set()関数を使ってタイムゾーンを指定することです。
回答を見る
  • ベストアンサー

PHPのdate()について

date()関数は日時などを表す関数ですが、 下記スクリプトを実行すると、現在の時刻 を表示するらしいのですが、実際にブラウザ で表示すると、0と表示され、現在時刻が表示 されませんでした。 <?php print date("G"); ?> そこで、xamppのphp.iniファイルのタイムゾーンを修正 [date] #date.timezone = Europe/Berlin date.timezone = Asia/Tokyo として <?php print date("G"); ?> を実行しましたが、やはりブラウザには0とだけ表示されます。 なので、phpスクリプトを <?php date_default_timezone_set("Asia/Tokyo"); print date("G"); ?> としたら 意図したとおり、11時台に実行したら、11と表示されました。 この違いは一体なんなのでしょうか? ご教授下さい。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

php.iniを変更した後、xamppのapacheは再起動しましたか?

関連するQ&A

  • [PHP]php.iniが読み込まれない

    php.iniを変更しても反映されません。 読み込んでいるファイルが違うのかとも思い、php.iniを削除してコマンドを実行すると以下のようになりました。 ■php -i | grep php.ini [結果] Configuration File (php.ini) Path => /etc しかし、phpinfo();で表示した場合、以下のように削除前の情報を保持したままです。 本当はLoaded Configuration Fileの結果が(None)となるはずだと思うのです。 ■phpinfo();の結果 [結果] Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini ちなみに削除前は以下の通りです。 ■php -i | grep php.ini [結果] Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini ■phpinfo();の結果 [結果] Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini キャッシュかとも思いキャッシュを削除してみましたが変わりませんでした。 上記の理由なのかtimezoneを設定してみても同じです。 ■php -i | grep timezone [結果] Default timezone => Asia/Tokyo date.timezone => Asia/Tokyo => Asia/Tokyo ■phpinfo();の結果 [結果] Default timezone:UTC PHPは5.6でnginxで動かしています。 アドバイスをお願いします。

    • 締切済み
    • PHP
  • PHPプログラム上で「URLを直接叩く(GET出来る)コマンド」につい

    PHPプログラム上で「URLを直接叩く(GET出来る)コマンド」についての質問です。 「ファイルのタイムスタンプが過去24時間より新しかったらメールCGIを実行する」というphpを作ってみました。 しかしながら、実行すると、「Script timezone differs from ini-set timezone.1289040460128896920024時間以内なのでメール送信しました.」とスクリプトが実行(タイムスタンプも取得された)はずなのですが、肝心なメールが飛んできません。 下記のソースをご確認頂き、不味い点をご指摘いただけませんでしょうか? 尚、cgiそのものはhttp://hoge.com/test/form.cgi?&act=2をブラウザから直接URLで叩くと、メールが飛ぶようになっていますのでcgiの不具合ではありません。 宜しくお願い致します。 環境は、Cent OS Apache/2.2.3 php 5.1.6 です。 ソースは下記です。 <?php date_default_timezone_set('Asia/Tokyo'); $script_tz = date_default_timezone_get(); if (strcmp($script_tz, ini_get('date.timezone'))){ echo 'Script timezone differs from ini-set timezone.'; } else { echo 'Script timezone and ini-set timezone match.'; } echo filemtime("./data/bbs.cgi"); echo strtotime ("yesterday"); //日付をstrtotime()で変換して比較します if (filemtime("./data/bbs.cgi") > strtotime ("yesterday")) { $command = `http://hoge.com/test/form.cgi?&act=2`; echo '24時間以内なのでメール送信しました.'; }else{ exit( "PHPスクリプト終了!!" ); } ?> 試行錯誤的に、$command = `http://hoge.com/test/form.cgi?&act=2`;の部分を echo $url = $_GET["http://hoge.com/test/form.cgi?&act=2"];とか header('Location:http://hoge.com/test/form.cgi?&act=2')とかに変更してみましたが、やはり駄目でした。 $_GETについては、フォーム上で使うイメージがあり、上記のようなスクリプト内への記載方法が分かりません。宜しくお願い致します。 尚、yahoo知恵袋にも質問をしたのですが、知恵袋は質問のやり取りが出来ない仕様のため、解決に至らず一旦クローズドしてこちらでお聞きする次第です。ダブルで質問している訳ではございませんので宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPについて

    xamppをインストールしてPHPの学習をしております。 そこで、 PHPについて以下2つの質問があります。 質問1 関数の引数について <?php phpinfo(); ?> は、phpの情報を表示するスクリプトですが、関数の()の中に 引数を書くときは、引数を""で囲む場合と囲まない場合はあるのでしょうか? 質問2 エラーについて ファイル名:client.php <?php print "あなたのIP:"; print getenv("REMOT_ADDR"); print "<BR>" print "あなたのホスト名"; print gethostbyaddr(getenv("REMOTE_ADDR")); ?> 上記スクリプトを作成して、http://localhost/client.phpとブラウザ で実行したところ、 Parse error: syntax error, unexpected T_PRINT in C:\xampp\htdocs\client.php on line 5 というメッセージが表示され、5行目【print "あなたのホスト名";】を何回も見ていますが、 何も間違っていない気がします。何が間違っているのでしょうか? どなたかご教授下さい。

    • ベストアンサー
    • PHP
  • dateやmktimeやgetdateなどでエラー

    <?php print "a"; echo rand(1,10); ?> とかはちゃんと表示されるのですが、 dateやmktimeやgetdateなどを使うとエラーが出てしまいます。 サンプルコードは参考書通りなので間違っていないと思うのですが、 サーバー側の問題なのでしょうか。サーバーはapache2.4でローカルで使っています。 <?php echo date('c', mktime(1, 2, 3, 4, 5, 2006)); ?> Warning: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\apache\htdocs\a.php on line 4 Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\apache\htdocs\a.php on line 4 2006-04-05T01:02:03+09:00 <?php $today = getdate(); print_r($today); ?> Warning: getdate() [function.getdate]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\apache\htdocs\a.php on line 2 Array ( [seconds] => 6 [minutes] => 44 [hours] => 23 [mday] => 11 [wday] => 6 [mon] => 2 [year] => 2012 [yday] => 41 [weekday] => Saturday [month] => February [0] => 1328971446 )

    • ベストアンサー
    • PHP
  • Strict Standards: date()   mkdate()

    PHP5を使っています。 error_reporting(E_STRICT); をつけると、2つのエラー?が画面に表示されます。 これが表示されるということは、何か原因があると思います。 phpのコードで根本から直したいので、対処方法をご存知の方、教えてください。 error_reportingをコメントとかは、したくないです。 (1) Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' (2) Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST'

    • ベストアンサー
    • PHP
  • php date関数について

    xamppを使ってphpを勉強している初心者です。 date関数についてわからない現象が起きてしまいました。 以下のように記入したところ  $date = date("Y n d");  echo $date; ブラウザには次のように表示されてしまいます。  12013 6 18   ↑ 先頭の「1」がどうして付いてしまうのかわかりません。 どなたかご存知の方がいましたら教えて頂きたいと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpinfo();でtimezoneが設定されていないというエラーが

    phpinfo();でtimezoneが設定されていないというエラーが出てしまいます。 phpはバージョン5.3.2です。 エラーは Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\inetpub\wwwroot\phpinfo.php on line 2 と書いてあったのでphp.iniを確認しましたが、 date.timezone = Asia/Tokyo という記述は確かにありました。 Loaded Configuration Fileのパスも編集しているものと同じでした。 phpinfo();を書く前に date_default_timezone_set('Asia/Tokyo'); とするとエラーは出ません。 原因がよくわからなくて困っています。教えていただけないでしょうか。

    • 締切済み
    • PHP
  • 期限時間内にファィル更新があったら作動するPHP

    期限時間内にファィルの更新があったら作動するPHPを作ってます。 5つのファィルをチェックし、「昨日から今までの間に5つのうちのひとつでもファィルの更新があったら」「hoge.cgi?&act=2」を実行するスクリプトです。 下記が完成形のつもりです。 テストをしたところ、5つのファィル全部が「一昨日以前の日にち」だと「PHPスクリプト終了!!」の文字が出ます。(計算通りです) 一方、5つのファィルのうち「1つでも昨日以降更新したファィル」があると「PHPスクリプト終了!!」の文字は出ません。これも計算通りです。 また、echo filemtime("../../../05/dannetsu/mail.cgi");の部分では、それぞれの時間が表示されます。(linux時間)これも計算通りです。 ただ、なぜか、http://hoge.jp/hoge.cgi?&act=2 の実行だけがされません。 if (filemtime.... の部分を「orで繋げず、1つのファィルを読みに行くだけで実行可否を判断」するようにするとhttp://hoge.jp/hoge.cgi?&act=2 は実行されます。 従い、orで繋げている部分のミスだと思うのですが、どう見直してもミスが見つかりません。 後は私の根本的な勘違いが潜んでいるのではないかと思い、相談する次第です。 宜しくお願い致します。。 ソース <?php date_default_timezone_set('Asia/Tokyo'); $script_tz = date_default_timezone_get(); if (strcmp($script_tz, ini_get('date.timezone'))){ echo 'Script timezone differs from ini-set timezone.'; } else { echo 'Script timezone and ini-set timezone match.'; } echo filemtime("../../../05/dannetsu/mail.cgi"); echo filemtime("../../../05/gaikou/mail.cgi"); echo filemtime("../../../05/gaisou/mail.cgi"); echo filemtime("../../../05/kiso/mail.cgi"); echo filemtime("../../../05/kutai/mail.cgi"); echo filemtime("../../../05/naisou/mail.cgi"); echo strtotime ("yesterday"); //日付をstrtotime()で変換して比較します if (filemtime("../../../05/dannetsu/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/gaikou/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/gaisou/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/kiso/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/kutai/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/naisou/mail.cgi") > strtotime ("yesterday")) { $buf = file_get_contents('http://hoge.jp/ho/ge/ho/hoge.cgi?&act=2'); echo $buf; }else{ exit( "PHPスクリプト終了!!" ); } ?>

    • ベストアンサー
    • PHP
  • PHPで、dateとgmdate、どちらを使う?

    12月8日の午前0時台に、下記のプログラムを実行しました。 $strYear=date("Y"); $strMonth=sprintf("%02d",date("n")); $strDay=sprintf("%02d",date("j")); echo $strYear.$strMonth.$strDay; すると、20111207と表示されました。8日にならなかったわけです。 どうやら、date関数は動かしているパソコンの設定ファイル次第で結果が変わってくると分かりました。 よく似た関数に、gmdateがありますよね。こちらは、明確に日本時間と何時間ずれるか分かっています。 そこで質問なのですが、日本時間の時刻や日付を扱うプログラムを組むとき、どちらの関数を使っていますか? gmdateの方が、動かしているパソコンの環境を考えなくていいので、使うならgmdateかなあ? と思うのですが…。

    • ベストアンサー
    • PHP
  • Configuration File (php.ini) Pathにつ

    Configuration File (php.ini) Pathについて Apache2.2 PHP5.3.2 をWindowsXPマシンにインストールしました。 Configuration File (php.ini) Pathは現在C:\WINDOWSになっています。 httpd.conf内にPHPIniDir "C:/PHP5"(PHPインストールディレクトリです) という記述をし、PHP.iniファイルを同ディレクトリに追加したのですが、 Configuration File (php.ini) Pathは変わらず、PHPが動作しません。 (Apacheは再起動しています) PHPIniDir "C:/WINDOWS"でもダメです。 現状では、 ・PHP.iniをC:\WINDOWSにおく ・httpd.conf内にPHPIniDir "C:/PHP5"を記述(C:\PHP5以下にはPHP.iniをおかない) だとうまくいきます。 ちなみにLoaded Configuration Fileはnoneになっています。 ことの発端は、date関数でワーニングが出たので、調べたところPHP.ini内に date.timezone = "Asia/Tokyo" を追加するとなおるということを見たので修正したのですがなおらなかったことからです。 希望としては ・httpd.conf内にPHPIniDir "C:/PHP5"を記述し、PHP.iniをC:/PHP5以下におきたい  (Configuration File (php.ini) PathをC:/PHP5に変更したい) ・date_default_timezone_setという関数ではなくPHP.iniの設定で上記ワーニングを  なくしたい です。 XAMPPを使用…以外でご回答頂けるとありがたいです。 よろしくお願いしますm(__)m