请教PHP初期配置Timezone问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教PHP初期配置Timezone问题相关的知识,希望对你有一定的参考价值。

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl
执行phpize生成编译文件,phpize在PHP安装目录的bin目录下
/usr/local/php5/bin/phpize
运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,
这里会报错,可以根据错误信息去排查!
参考技术A php.ini 里 将
;date.timezone =
修改为:
date.timezone = PRC

在 php.ini 中设置 date.timezone 不起作用

【中文标题】在 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初期配置Timezone问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP 处理夏令时的时区

PHP用date转换时间出现时间不正确。在配置文件php.ini设置了date.timezone = Asia/ShangHai还是一样。

如何设置php的date.timezone

在 php.ini 中设置 date.timezone 不起作用

怎样设置PHP的timezone

OSX上设置PHP的时区 date.timezone