在我的配置文件的开头我有:
date_default_timezone_set('America/Los_Angeles');
echo "Set default timezone: " . date_default_timezone_get() . "n";
...
我通过CLI执行PHP脚本,输出看起来像这样:
设置默认时区:美国/los_angeles
php警告:date():依靠系统的时区是不安全的 设置。您是所需的要使用日期。 date_default_timezone_set()函数。如果您使用了任何一个 方法,您仍然会收到此警告,您很可能 拼写错误的时区标识符。我们选择了时区" UTC" 现在,但是请设置日期。TimeZone选择您的时区。在
中
为什么即使设置了时区之后,我也会收到"依靠系统的时区设置"的消息?
-------更新-----------------
事实证明这是一个线程问题,因此需要设置为php.ini解决它。
<?php
require __DIR__ . '/config.php';
date_default_timezone_set('America/Los_Angeles');
echo "Timezone: " . date_default_timezone_get() . "n";
function threadTest() {
echo "Thread Timezone: " . date_default_timezone_get() . "n";
}
$thread = new Thread_Async();
$thread->call('threadTest');
结果:
时区:美国/los_angeles
php警告:date_default_timezone_get():依靠不安全 系统的时区设置。您是所需的 date.timezone设置或date_default_timezone_set()函数。在 案例您使用了任何这些方法,但您仍在获得此方法 警告,您很可能拼错了时区标识符。我们 现在选择了时区" UTC",但请设置日期。 选择您的时区。在/pvolf/wwwdev/app/test.php in第10行
线程时区:UTC
检查用于命令行的INI。我敢打赌它没有时区设置。尝试使用-d date.timezone=UTC
运行命令行:
php -d date.timezone=UTC foo.php