9

php.ini ファイルに次のエントリがあります。

date.timezone = 'Europe/London';

しかし、コマンド ライン スクリプトで DateTime() を使用するたびに、次のエラーが発生します。

Exception: DateTime::__construct(): 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 'Europe/London' for 'BST/1.0/DST' instead

したがって、これを機能させるには、スクリプトで次のことを行う必要があります。

date_default_timezone_set('Europe/London');

他に何がこのエラーを引き起こしている可能性がありますか?

アップデート

コマンドラインと Web ブラウザの両方で以下を使用しました。

<?php

var_dump(ini_get('date.timezone'));
exit;

コマンドラインで私は得る:

string(0) ""

Webブラウザで私は得る:

string(13) "Europe/London" 
4

2 に答える 2

22

CLI と Web サーバー (および cgi とphp.inifpm) は異なるファイルを使用します。ブラウザに正しい値が表示されていると言うので、間違った値を編集したと思います。CLI タイプについて

php --ini

編集する必要があるものを見つけるには。たとえば、2行目のものです

Loaded Configuration File:         /etc/php5/cli/php.ini
于 2012-08-24T11:29:14.530 に答える
1

一部のサーバー (メディア テンプルなど) は、特定のドメインの構成を行います。そのため、サーバーは /etc/php.ini の下にある共通の php.ini ファイルにアクセスしますが、ブラウザーはドメインの php.ini ファイルにアクセスします。問題

于 2012-08-24T11:37:33.363 に答える