【问题标题】:Setting timezone not applying?设置时区不适用?
【发布时间】:2014-03-31 11:15:26
【问题描述】:

随着 PHP 5.4 添加警告以提醒时区问题,此错误很常见:

警告:strtotime():依赖系统的时区设置是不安全的。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,您很可能拼错了时区标识符。我们现在选择时区“UTC”,但请设置 date.timezone 以选择您的时区。在第 42 行的 somefile.php 中

好的,很公平。添加date_default_timezone_set('UTC') 既好又简单,但我不想为每个脚本都这样做,尤其是在 CLI 上执行操作时。

所以我在我的 php.ini 文件中添加了一行:

date.timezone=UTC

而且...它不起作用。警告仍然出现。

为了调试,我这样做了:

echo file_get_contents(php_ini_loaded_file());

它输出:

extension=./ext/php_gd2.dll
extension=./ext/php_oauth.dll
extension=./ext/php_curl.dll

date.timezone=UTC

extension 行都可以工作 - 我把它们拿出来,我不能使用这些功能,我把它们放进去,我可以。只是date.timezone 不接受。我做错了什么?

【问题讨论】:

标签: php php-ini


【解决方案1】:
  1. 我在 OpenWRT 上遇到过类似的问题 - 事实证明你需要 正确设置 /etc/localtime

    Chek /usr/share/zoneinfo/ 获取可用时区(如果 需要)并选择您的风格(只需复制正确的文件)。

  2. 我遇到的另一个问题是 不同版本的 php - cgi、fpm、cli 等 - 确保你已经 在您拥有的所有 php.ini 文件中添加了 date.timezone 行 你的系统。

编辑

您的 php.ini 文件中可能有这样的第二行:

; some lines of variables
date.timezone = UTC
; more lines of variables
date.timezone = 
; even more lines

,这将有效地覆盖您的 date.timezone

【讨论】:

  • 您好,蓝色,感谢您的回答。我应该指定,但我在 Windows 上运行,所以我没有 /etc/localtime/usr/share/zoneinfo。另外,我只有一个 PHP.ini 文件,这并不能解释 php_ini_loaded_file() 清楚地显示时区指令。
  • @NiettheDarkAbsol - 您是否尝试过使用支持时区列表中的时区 -> Europe
  • @NiettheDarkAbsol - 请运行一个只有 phpinfo(); 的页面并找到“加载的配置文件”。确保您在该文件中有 date.timezone 行。 FIY - 我刚刚在带有 UTC 的 Windows 上对其进行了测试,它工作得很好。
  • @NiettheDarkAbsol - 好吧,后者表明 php.ini 文件中 date.timezone 没有“价值”。我的说“UTC”。如果您有多个 date.timezone 行的实例,请编辑文件并小心!另外,请记住,命令行参数可能会覆盖此(和其他)值。
  • 如“php.ini文件”截图所示,该行确实只有一个实例。
猜你喜欢
  • 2021-04-30
  • 2011-10-13
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2020-10-17
  • 2018-08-15
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多