サーバー上で _ 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>
おそらくあなたの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
)を再起動してください。
これは サポートされているタイムゾーンのリストです 。
Php.iniの設定を変更できない場合は、コードの冒頭に次のコードを追加してください。
date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want
タイムゾーンのリストは http://www.php.net/manual/en/timezones.php にあります。
index.php
ファイルに以下を追加してください。私のアプリケーションを私の _ xampp _ serverからApache 2.2とPHP 5.4に移動したとき、私は最初にこれに遭遇しました。
index.php
ファイルの代わりにあなたのphp.ini
ファイルでそれをするように勧めます。
if( ! ini_get('date.timezone') )
{
date_default_timezone_set('GMT');
}
<? print(gmdate("Y")); ?>
の代わりに
<? print(date("Y")); ?>
私のために働いた(今年を示し、これ以上エラーメッセージを表示しない)。 (上記のクリスに感謝)
これらがあなたの選択ではない場合
php.ini
を修正します。date_default_timezone
呼び出しを追加しています。date
の代わりにgmdate
を使うことができます。
著作権の小冊子に1年が必要なときにgmdate( "Y" )
を使用しました。
CodeIgniterを使用していてphp.iniを変更できない場合は、index.phpの冒頭に次のコードを追加しました。
date_default_timezone_set('GMT');
私はいつもこの行をcodeigniterのルートindex.php
の中に入れています。私のコードはどのサーバーでも動作するので
date_default_timezone_set('Asia/Dhaka');
@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
この解決策は、システム全体にアクセスできない人だけのものではありません。あなたがあなた以外の誰かにそれを提供するとき、それはどんなスクリプトにも必要です。スクリプトを他の人に配布するときに、どのサーバーでスクリプトが実行されるのかわかりません。
二重引用符で囲みます。
date_default_timezone_set("America/Los_Angeles"); // default time zone
私は作曲家に "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
そして行ってもいいでしょう:)
いくつかの回答で述べたようにdate.timezone =を設定することに加えて、私はそれがdate.timezoneに到達するのを妨げているphp.iniファイルにエラーを見つけました。私がそれを見つけた方法は、端末のコマンドラインからphpを実行することでした。これによりエラーが114行目で報告されるようになりました。私の場合、 '|'を含んだエラーを表示するための設定のコメントを外しました。 2つの値の間それは好きではありませんでした。値の1つを削除しました。それからすべてが良かった
.htaccess
ファイルにタイムゾーンを設定できます
php_value date.timezone UTC
<? 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());
これはタイムゾーンを知らない人にとっては簡単な解決策です。
私は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の再起動が有効になります。これが誰かに役立つことを願っています。
この答え 上の 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ファイルがあるフォルダです。
私の特定のケースでは、私はPHPがPHP-FPM(FastCGI Process Manager)を使うように設定されています。 CLIからphpinfo()
を実行すると、php.iniに設定した正しいタイムゾーンが表示されますが、ブラウザではまだ正しくないため、コードが失敗します。私は単にサーバー上のphp-fpm
サービスを再起動する必要がありました。
service rh-php56-php-fpm restart
php.ini
を編集した場合は、httpd
サービスを再起動する必要があります。
service httpd restart
あなたが非互換性を修正している間の簡単な解決策はあなたの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 );
私は私たちの西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...".
私はそれを機能させるために以下の変更を行いました。誰かが同様の問題に直面していて上記の答えのどれも助けにならなかった場合に備えてこれらの詳細を共有する。
ntpstat
コマンドを実行してntpdサービスのステータスが正常であることを確認しました。エラーが発生した場合は、このリンクをクリックすると問題の原因を特定できます。date.timezone
がどの値にも設定されておらず、デフォルトでコメントされていることもわかりました。 ';'を削除してコメントを解除しましたこの行の前に、その値を"UTC"
に設定してファイルを保存します。Sudo service httpd restart
およびSudo service ntpd restart
コマンドを使用してhttpおよびntpデーモンを再起動しました。これ以降、私は例外なくバケットを正常にリストすることができます。お役に立てれば。
ファイル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>
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