【发布时间】:2015-07-13 07:57:16
【问题描述】:
在我的配置文件的开头我有:
date_default_timezone_set('America/Los_Angeles');
echo "Set default timezone: " . date_default_timezone_get() . "\n";
...
我通过 CLI 执行 PHP 脚本,输出如下所示:
设置默认时区:America/Los_Angeles
PHP 警告:date():依赖系统的时区是不安全的 设置。您必须使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了其中任何一个 方法并且您仍然收到此警告,您很可能 时区标识符拼写错误。我们选择了时区“UTC” 现在,但请设置 date.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');
结果:
时区:美国/洛杉矶
PHP 警告:date_default_timezone_get():依赖它是不安全的 系统的时区设置。您必须使用 date.timezone 设置或 date_default_timezone_set() 函数。在 如果你使用了这些方法中的任何一种,你仍然得到这个 警告,您很可能拼错了时区标识符。我们 暂时选择时区“UTC”,但请将 date.timezone 设置为 选择您的时区。在 /pvolf/wwwdev/app/test.php 第 10 行
线程时区:UTC
【问题讨论】:
-
我在 CLI 和浏览器上测试了您的代码,但无法重现该错误。你确定你已经保存了文件吗?
-
我认为这是在
Thread_Async对象内部发生的,这可能是原因吗?也许当你创建一个新线程时时区设置不会被复制? -
在我可以访问的 3 台服务器上 100% 工作
-
我意识到这是线程问题,不过感谢您的输入