繁体   English   中英

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

[英]Cannot Set date.timezone In php.ini file

我正在使用 php5.5 并且每当我在 PHP 中使用日期函数时都会收到此错误:

 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 服务器守护程序中触发它(因为命令行版本可能与它使用的版本不同)。

<?php
phpinfo();
?>

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

编辑2:

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

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

/etc/php5/apache2/php.ini 

在这里修改了 date.timezone 但它不起作用。

因此,我检查 phpinfo() 中的“扫描此目录以获取其他 .ini 文件”值,该值指向:

/etc/php5/apache2/conf.d 

然后我从该文件夹中的所有文件中搜索 date.timezone 但没有找到。

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

/etc/php5/apache2/conf.d/05-opcache.ini, /etc/php5/apache2/conf.d/10-pdo.ini, /etc/php5/apache2/conf.d/20-json.ini, /etc/php5/apache2/conf.d/20-mysql.ini, /etc/php5/apache2/conf.d/20-mysqli.ini, /etc/php5/apache2/conf.d/20-pdo_mysql.ini, /etc/php5/apache2/conf.d/20-xdebug.ini, /etc/php5/apache2/conf.d/30-mcrypt.ini 

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

date.timezone = Asia/Jakarta

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

您应该通过定位 php.in 来查看,如果某处有另一个。

为了我。 命令行界面应该有 CLI:

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

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

它现在对我有用。

从源代码编译 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 5.6.4 时遇到了同样的问题。

  • PHP 5.6.4 表现奇怪
  • PHP 5.6.11 正常运行

当我将date.timezone配置选项放在配置文件的 [PHP] 部分下时,它适用于 PHP 5.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"

当我向20-xdebug.ini添加选项时,就像在接受的答案https://stackoverflow.com/a/20731466/2111430 中的建议一样,该选项被接受,因为该文件只有[PHP]部分。 出于好奇,我尝试了其他包含的ini文件,看起来我可以使用任何一个。

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

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

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

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

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

 <IfModule mod_php5.c> php_value date.timezone "Europe/Paris" </IfModule>

检查 php.ini 中是否存在冲突设置,我遇到了同样的问题,在我的情况下,在 date.timezone 之前定义的 xdebug 设置导致了这件事:有关更多详细信息,请参阅: PHP Xdebug 问题 - date.timezone & session.save_path undefined

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

/etc/php5/cli/php.ini


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

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

我正在使用 PHP 7.3.6。

  1. 打开 xampp/php/php.ini
  2. 转到第 1967 行
  3. 设置行date.timezone=Asia/Jakarta
  4. 重启阿帕奇

在此处输入图片说明

希望回答你的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM