无法在php.ini文件中设置date.timezone

无法在php.ini文件中设置date.timezone,php,datetime,timezone,Php,Datetime,Timezone,我使用的是php5.5,每当我在PHP中使用date函数时都会出现以下错误: Warning: phpinfo(): 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 metho

我使用的是php5.5,每当我在PHP中使用date函数时都会出现以下错误:

 Warning: phpinfo(): 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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/info.php on line 1
加载的配置文件如下所示:

/etc/php5/apache2/php.ini 
因此,我将date.timezone设置更改为:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Jakarta

; http://php.net/date.default-latitude
;date.default_latitude = 31.7667

; http://php.net/date.default-longitude
;date.default_longitude = 35.2333

; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333

; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333
然后我重新启动服务器:

sudo /etc/init.d/apache2 restart
但仍然会出现此错误,我尝试检查附加ini文件位置中的.ini文件,但没有一个文件覆盖date.timezone设置

我已经检查了php.ini文件权限,但仍然不起作用 请指导我解决此问题,谢谢。

尝试以下方法:

date.timezone = "Asia/Jakarta"
编辑:

让我们找到正确的php.ini。在apache/nginx/您使用的任何web服务器deamon中触发此命令(因为它使用的命令行版本可能不同)


输出中的.ini是什么?还是一样吗

编辑2:

在php.ini编辑之后,只需重新启动Web服务器(apache或nginx).

最终解决了我的问题, 这是我加载的配置文件:

/etc/php5/apache2/php.ini 
在这里修改了date.timezone,但它不起作用

因此,我检查phpinfo()中的“Scan this dir for additional.ini files”值,该值指向:

/etc/php5/apache2/conf.d 
然后我从该文件夹中的所有文件中搜索date.timezone,但没有找到任何文件

这是我在phpinfo()中解析的附加.ini文件值:

我修改了/etc/php5/apache2/conf.d/20-xdebug.ini,并添加了这一行:

date.timezone = Asia/Jakarta

很奇怪,但这解决了我的问题

如果某个地方有另一个php.in,您应该通过查找php.in来检查

对我来说。命令行界面应具有CLI:

/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini
更改
/etc/php5/cli/php.ini


它现在适用于我。

当我注意到php.ini中的date.timezone条目被注释掉时,它适用于我。删除分号后,时区设置正确

从源代码编译PHP之后,我的另一个解决方案是检查PHP.ini是否实际加载了配置文件。从命令行

php --ini
返回

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
找到它

find -name "php.ini" #it was in /usr/local/php/php.ini
cp /usr/local/php/php.ini /usr/local/lib/php.ini
重新启动php(在我的例子中,
/etc/init.d/php-fpm-stop
/etc/init.d/php-fpm-start
),它工作正常。由于某种原因,它被复制错了

  • 发行版:Centos 7
  • 网络服务器:Nginx
  • 类型:EC2实例

一些命令行php应用程序安装程序(如symfony安装程序,甚至当php脚本从cli运行时)使用php cli目录中的ini文件

/etc/php5/cli/php.ini



这解决了我在安装Symfony时在依赖项检查过程中遇到的类似问题。

如果您在php.ini中设置了date.timezone值,但它不起作用(即本地值和主值不同),那么您可能需要在apache配置文件中更新类似的内容:


php_value date.timezone“欧洲/巴黎”

我在Mac OSX El Captain中修复了这个问题,创建了一个文件夹结构:/Library/Server/Web/Config/php,然后在这个新的php文件夹中创建一个php.ini,只需使用date.timezone指令。

我最近在php 5.6.4中遇到了同样的问题

  • PHP5.6.4的行为很奇怪
  • PHP5.6.11的行为与预期的一样正常
当我将
date.timezone
configuration选项放在配置文件的[PHP]部分下时,它在PHP5.6.4中运行良好。例如,我在
php.ini
文件的最开始添加了该选项

[PHP]
date.timezone = "Europe/Stockholm"
但是,当我在
[Date]
部分中的示例中显示配置选项时,它没有按预期工作,看起来该选项被忽略了

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; this does not work for me for PHP 5.6.4 but works fine for PHP 5.6.11
date.timezone = "Europe/Stockholm"
当我将选项添加到
20xdebug.ini
中时,就像它是接受答案中的建议一样,该选项被接受,因为该文件只有
[PHP]
部分。出于好奇,我尝试了其他包含的
ini
文件,看起来我可以使用任何一个


还有一次,这个问题只发生在我使用PHP5.6.4时。当我用PHP 5.6.11更改服务器上的选项时,它的行为与我预期的完全相同。

检查PHP.ini中的冲突设置,我也有同样的问题,在我的例子中,xdebug设置是在date.timezone之前定义的,导致了这个问题:有关更多详细信息,请参阅:

在我的例子中,我在php.ini文件中有2条
date.timezone=
记录,最后一条记录覆盖了第一条记录。移除其中一个解决了我的问题

另外,不要忘记需要重新启动web服务器进程。

Iam使用PHP7.3.6

  • 打开xampp/php/php.ini
  • 转到第1967行
  • 设置行
    date.timezone=Asia/Jakarta
  • 重新启动Apache

  • 希望回答您的问题

    您确定您使用的是php.ini吗?是的,我非常确定,我更改了加载的配置文件中的php.ini您确定没有覆盖同一文件中的date.timezone吗?是,我搜索了date.timezone的另一个事件,但没有找到。您可以使用date\u default\u timezone\u set(“亚洲/雅加达”)临时解决它吗?注意:
    php cli
    php.ini
    文件与
    apache2
    php.ini
    文件不同。我建议用符号链接彼此以保持同步,避免混淆!这会发生在debian上吗?检查您php.ini中的冲突设置,我在date.timezone之前定义了相同的xdebug设置,这导致了这个问题:有关更多详细信息,请参阅:它可能与:我还想补充一点,我在名为99-liip-developer.ini的“additional.ini files”目录中找到了一个.ini文件,不确定它是如何到达那里的,但它有
    date.timezone=Europe/Zurich
    ,让我抓狂,删除了php.ini文件中的代码,我的代码工作正常(在macOS Sierra上):注意,在我的安装中,
    php-i | grep php.ini
    告诉我我的php.ini是/etc/php.ini。然而,当我运行
    php--ini
    时,我能够看到我的php.ini实际上是从/usr/local/etc/php/5.6/php.ini加载的。我不知道为什么
    [PHP]
    date.timezone = "Europe/Stockholm"
    
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    ; this does not work for me for PHP 5.6.4 but works fine for PHP 5.6.11
    date.timezone = "Europe/Stockholm"