在 php.ini 中设置 date.timezone 不起作用
Posted
技术标签:
【中文标题】在 php.ini 中设置 date.timezone 不起作用【英文标题】:Setting date.timezone in php.ini does not work 【发布时间】:2018-03-29 01:43:03 【问题描述】:phpinfo() 函数输出截图:
当我尝试安装需要设置 date.timezone 的 Roundcube 时,我想通过填写 php.ini 中的 date.timezone 字段来设置 date.timezone。
服务器配置
Debian 9(拉伸) PHP 7.0.19-1 (cli)(构建时间:2017 年 5 月 11 日 14:04:47)(NTS) Apache/2.4.25 (Debian)我尝试了什么
根据http://php.net/manual/en/timezones.php,我用不同的语法修改了 /etc/php/7.0/apache2/php.ini 和 /etc/php/7.0/cli/php.ini 中的 date.timezone 字段:
date.timezone = Europe/Paris
date.timezone = 'Europe/Paris'
date.timezone = "Europe/Paris"
而且我总是在进行任何更改后重新启动 Apache。
phpinfo 没有任何变化,date.timezone 字段总是设置为“无值”并且安装 Roundcube 的第一步,date.timezone 是 NOT OK。
但是当我尝试时:
php -i
我明白了:
date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => Europe/Paris
Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => Europe/Paris => Europe/Paris
我阅读了许多关于此类问题的非常古老的帖子,但不同的解决方案对我不起作用。有什么想法吗?
编辑
根据phpinfo():
配置文件 (php.ini) 路径
/etc/php/7.0/apache2
加载的配置文件
/etc/php/7.0/apache2/php.ini
扫描此目录以获取其他 .ini 文件
/etc/php/7.0/apache2/conf.d
解析的其他 .ini 文件
/etc/php/7.0/apache2/conf.d/10-mysqlnd.ini, /etc/php/7.0/apache2/conf.d/10-opcache.ini, /etc/php/7.0/apache2/ conf.d/10-pdo.ini, /etc/php/7.0/apache2/conf.d/15-xml.ini, /etc/php/7.0/apache2/conf.d/20-calendar.ini, /etc /php/7.0/apache2/conf.d/20-ctype.ini, /etc/php/7.0/apache2/conf.d/20-curl.ini, /etc/php/7.0/apache2/conf.d/20 -dom.ini, /etc/php/7.0/apache2/conf.d/20-exif.ini, /etc/php/7.0/apache2/conf.d/20-fileinfo.ini, /etc/php/7.0/ apache2/conf.d/20-ftp.ini, /etc/php/7.0/apache2/conf.d/20-gd.ini, /etc/php/7.0/apache2/conf.d/20-gettext.ini, /etc/php/7.0/apache2/conf.d/20-iconv.ini, /etc/php/7.0/apache2/conf.d/20-imagick.ini, /etc/php/7.0/apache2/conf.d /20-imap.ini, /etc/php/7.0/apache2/conf.d/20-intl.ini, /etc/php/7.0/apache2/conf.d/20-json.ini, /etc/php/ 7.0/apache2/conf.d/20-mbstring.ini、/etc/php/7.0/apache2/conf.d/20-mcrypt.ini、/etc/php/7.0/apache2/conf.d/20-memcache。 ini, /etc/php/7.0/apache2/conf.d/20-mysqli.ini, /etc/php/7.0/apache2/conf.d/20-pdo_mysql.ini, /etc/php/7.0/apache2/ conf.d/20-pdo_sqlite.ini, /etc/php/7.0/apache2/conf.d/20-phar.ini, /etc/php/7.0/apache2/conf.d/20-posix.ini, /etc /php/7.0/apache2/conf.d/20-pspell.ini, /etc/php/7.0/apache2/conf.d/20-readline.ini, /etc/php/7.0/apache2/conf.d/20 -recode.ini, /etc/php/7.0/apache2/conf.d/20-shmop.ini, /etc/php/7.0/apache2/conf.d/20-simplexml.ini, /etc/php/7.0/ apache2/conf.d/20-snmp.ini, /etc/php/7.0/apache2/conf.d/20-sockets.ini, /etc/php/7.0/apache2/conf.d/20-sqlite3.ini, /etc/php/7.0/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.0/apache2/conf.d/20-sysvsem.ini, /etc/php/7.0/apache2/conf.d /20-sysvshm.ini, /etc/php/7.0/apache2/conf.d/20-tidy.ini, /etc/php/7.0/apache2/conf.d/20-tokenizer.ini, /etc/php/ 7.0/apache2/conf.d/20-wddx.ini、/etc/php/7.0/apache2/conf.d/20-xmlreader.ini、/etc/php/7.0/apache2/conf.d/20-xmlrpc。 ini, /etc/php/7.0/apache2/conf.d/20-xmlwriter.ini, /etc/php/7.0/apache2/conf.d/20-xsl.ini
【问题讨论】:
你的 cli ini 很好,但非 cli 显然有问题。在页面上执行 phpinfo() 并搜索.ini
以查看解析了哪些 ini 文件,然后检查它们没有覆盖设置
使用 php ini_set : ***.com/questions/15096297/…
@FarhangNegari 用户正在尝试安装一些软件。我不建议更改软件的源代码。
@delboy1978uk 我已经编辑了额外解析的.ini文件。
@FarhangNegari 我不确定 ini_set 能否解决我的问题,因为我想为 Roundcube 安装正确设置 date.timezone。
【参考方案1】:
我遇到了类似的问题( date.timezone 显示为 not set apache php extension /phpinfo() )。通过重启php-fpm服务解决(Fast cgi process manager)。
systemctl 重启 php-fpm
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:我注意到 xampp 的 php.ini 文件中有两个地方不同,这里:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/Phoenix"```
and here:
; List of headers files to preload, wildcard patterns allowed.
;ffi.preload=
[Syslog]
define_syslog_variables=Off
[Session]
define_syslog_variables=Off
[Date]
date.timezone=Europe/Berlin```
注意它们是不同的——我不知道“欧洲/柏林”是如何进入我的 php.ini 的。我注意到这出现在我的 php 错误日志中,并在整个 xampp 文件夹中进行了搜索。
【讨论】:
【参考方案3】:让我贡献一些东西:我在 VPS 上安装 SilverStripe 时遇到了完全相同的问题。整个下午我一直在寻找答案,但没有积极的结果。经过所有尝试,我删除了“;”在前面
[日期]
;定义日期函数使用的默认时区
;date.timezone = 欧洲/伦敦
这是我得到答案的地方: https://www.silverstripe.org/community/forums/installing-silverstripe/show/15398?start=8
希望大家避免这个麻烦
【讨论】:
【参考方案4】:我发现了问题。这是我在 error_reporting 区域中的 php.ini 文件中的语法错误。
【讨论】:
【参考方案5】:php_info() 将始终指示正在使用的 .ini 的路径,确保这是正确的,并与您正在编辑的 ini 对齐。
【讨论】:
这应该写成评论,因为我们不能 100% 知道这是否是问题所在。以上是关于在 php.ini 中设置 date.timezone 不起作用的主要内容,如果未能解决你的问题,请参考以下文章