web-dev-qa-db-ja.com

"date():システムのタイムゾーン設定に頼るのは安全ではありません..."

サーバー上で _ php _ バージョンを5.2.17からPHP 5.3.21に更新するように要求したときに、このエラーが発生しました。

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  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 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 86</p>

</div>
Warning: 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 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 86

Warning: 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 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 99
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  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 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 99</p>

</div>
344
user1852837

おそらくあなたのphp.iniファイルの設定行にタイムゾーンを入れる必要があります。 php.iniファイルに次のようなブロックがあるはずです。

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York

そうでない場合は、それを追加します(タイムゾーンを自分のものに置き換えます)。設定後は、必ずhttpd(service httpd restart)を再起動してください。

これは サポートされているタイムゾーンのリストです

537
CtrlX

Php.iniの設定を変更できない場合は、コードの冒頭に次のコードを追加してください。

date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want

タイムゾーンのリストは http://www.php.net/manual/en/timezones.php にあります。

192

index.phpファイルに以下を追加してください。私のアプリケーションを私の _ xampp _ serverからApache 2.2とPHP 5.4に移動したとき、私は最初にこれに遭遇しました。

index.phpファイルの代わりにあなたのphp.iniファイルでそれをするように勧めます。

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
69
Justis Matotoka
<? print(gmdate("Y")); ?> 

の代わりに

<? print(date("Y")); ?>

私のために働いた(今年を示し、これ以上エラーメッセージを表示しない)。 (上記のクリスに感謝)

16
Susan Taunton

これらがあなたの選択ではない場合

  • php.iniを修正します。
  • date_default_timezone呼び出しを追加しています。

dateの代わりにgmdateを使うことができます。

著作権の小冊子に1年が必要なときにgmdate( "Y" )を使用しました。

15
Chris

CodeIgniterを使用していてphp.iniを変更できない場合は、index.phpの冒頭に次のコードを追加しました。

date_default_timezone_set('GMT');
14
Jose

私はいつもこの行をcodeigniterのルートindex.phpの中に入れています。私のコードはどのサーバーでも動作するので

date_default_timezone_set('Asia/Dhaka');

サポートされているタイムゾーンの一覧はこちら

13
Shaiful Islam

@Justisは私に正しい方向を示しました、しかし彼のコードは私のために働きませんでした。これはしました:

// set the default timezone if not set at php.ini
if (!date_default_timezone_get('date.timezone')) {
    // insert here the default timezone
    date_default_timezone_set('America/New_York');
}

ドキュメンテーション: http://www.php.net/manual/en/function.date-default-timezone-get.php

この解決策は、システム全体にアクセスできない人だけのものではありません。あなたがあなた以外の誰かにそれを提供するとき、それはどんなスクリプトにも必要です。スクリプトを他の人に配布するときに、どのサーバーでスクリプトが実行されるのかわかりません。

10
John Linhart

二重引用符で囲みます。

date_default_timezone_set("America/Los_Angeles"); // default time zone
4
nocturnalact

私は作曲家に "createbucket.php"スクリプトを挿入しようとしていて、私のタイムゾーンが間違っていると言われ続けているので、この問題は私に何度か私を悩ませています。

結局、問題を解決した唯一のことはそれでした:$ Sudo nano /etc/php.ini

タイムゾーン を検索

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = UTC

;を削除してください。

そして最後に

$ Sudo service httpd restart

そして行ってもいいでしょう:)

4
T0mmyKn1fe

いくつかの回答で述べたようにdate.timezone =を設定することに加えて、私はそれがdate.timezoneに到達するのを妨げているphp.iniファイルにエラーを見つけました。私がそれを見つけた方法は、端末のコマンドラインからphpを実行することでした。これによりエラーが114行目で報告されるようになりました。私の場合、 '|'を含んだエラーを表示するための設定のコメントを外しました。 2つの値の間それは好きではありませんでした。値の1つを削除しました。それからすべてが良かった

2
M Graham

.htaccessファイルにタイムゾーンを設定できます

php_value date.timezone UTC
1
<? date_default_timezone_set('Europe/Istanbul'); ?>

Php(またはあなたの場所)のために。

2タイムゾーンの簡単な方法.

<?php 
$date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); 

date_default_timezone_set('America/New_York'); 

echo date("Y-m-d h:iA", $date->format('U')); 

// 2012-07-05 10:43AM 
?>
    date_default_timezone_set(date_default_timezone_get());

これはタイムゾーンを知らない人にとっては簡単な解決策です。

0

私はchroot刑務所でphp-fpmを実行しているときにこのエラーが発生しました。 chrootディレクトリにetc/php.iniと/ usr/share/zoneinfoを作成しようとしましたが、うまくいきませんでした。私はphp-fpmデーモンを探して、それらが何のファイルが見つからなかったのかを確かめようとさえしました - 何も飛び出しませんでした。

そのため、chroot用に設定されたphp-fpmを使用しているときにこのエラーが発生してGoogleがここに表示した場合は、おそらくENVセクションの/etc/php-fpm.d/www.confに次の行を追加することで解決できます。

env[TZ] = America/New_York

通常、php-fpmの再起動が有効になります。これが誰かに役立つことを願っています。

0
Don Law

Pleskを使用している場合は、試してみてください。まず、PHP設定を開き、ページの下部にあるdate.timezoneをDEFAULTからUTCに変更します。

enter image description here

enter image description here

0
Latief Anwar

この答え 上の CtrlX は正しい答えですが、完全には動作しないかもしれません。この行を私の php.ini fileに追加しました。

date.timezone = "America/Los_Angeles"

私のPHPスクリプトの中にはサブフォルダーにあるものもあるので、私のすべてのファイルのPHPエラーは削除されませんでした。そこで、 .htaccess ファイルを編集してphp.iniを再帰的に(サブフォルダに)使えるように設定しなければなりませんでした。

suphp_configpath /home/account_name/public_html

ここで、account_nameはあなたのcpanelアカウント名、public_htmlはあなたのphp.iniファイルがあるフォルダです。

0
Jeff Baker

私の特定のケースでは、私はPHPがPHP-FPM(FastCGI Process Manager)を使うように設定されています。 CLIからphpinfo()を実行すると、php.iniに設定した正しいタイムゾーンが表示されますが、ブラウザではまだ正しくないため、コードが失敗します。私は単にサーバー上のphp-fpmサービスを再起動する必要がありました。

service rh-php56-php-fpm restart

php.iniを編集した場合は、httpdサービスを再起動する必要があります。

service httpd restart
0
EternalHour

あなたが非互換性を修正している間の簡単な解決策はあなたのindex.phpファイルのエラー報告を無効にすることです:

下の行を index.php below define( ‘_JEXEC’, 1 );に挿入します。

error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
E_COMPILE_WARNING );
0
Elise Oertli

私は私たちの西2(オレゴン)地域で私のEC2とS3バケットをホストしています。私のphpの既存のバケットをリストするために$s3client->listBuckets()を呼び出していたとき、私は例外を受けていました - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...".私はそれを機能させるために以下の変更を行いました。誰かが同様の問題に直面していて上記の答えのどれも助けにならなかった場合に備えてこれらの詳細を共有する。

  1. ドキュメント@ AWS ネットワークタイムプロトコル(NTP)の設定 に基づいて、ntpstatコマンドを実行してntpdサービスのステータスが正常であることを確認しました。エラーが発生した場合は、このリンクをクリックすると問題の原因を特定できます。
  2. /etc/php.iniファイルを開き(インストールされているphpのバージョンに基づいて異なるパスにあるファイルもあります)、date.timezoneがどの値にも設定されておらず、デフォルトでコメントされていることもわかりました。 ';'を削除してコメントを解除しましたこの行の前に、その値を"UTC"に設定してファイルを保存します。
  3. Sudo service httpd restartおよびSudo service ntpd restartコマンドを使用してhttpおよびntpデーモンを再起動しました。

これ以降、私は例外なくバケットを正常にリストすることができます。お役に立てれば。

0
Maruti C

ファイルphp.iniにアクセスできない場合は、ドメインまたはサブのルートで.htaccessファイルを作成または編集し、これを追加します(cpanelによって生成されます)。

<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

<IfModule php5_module>
php_value date.timezone "America/New_York"
</IfModule>

<IfModule lsapi_module>
php_value date.timezone "America/New_York"
</IfModule>
0
user3724176

Dockerユーザーの場合:プロジェクトにローカルのtimezone.iniファイルを作成し、docker-compose.ymlに設定を設定します。

    volumes:
        - "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"

timezone.ini

    date.timezone=Australia/Sydney
0
Jin