Mar*_*eld 7 php timezone ini datetime date
在运行Blue.box的php安装脚本(FreeSwitch PBX的前端)时,我收到有关时区故障的错误.
然后我开始挖掘.我不确定此时发生了什么.但这就是我所拥有的:
我在我的public_html目录中创建了一个包含一行的info.php文件:
我得到这个错误和输出
警告:phpinfo():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们在第1行的/home/0default/public_html/info.php中选择'America/New_York'作为'EDT/-4.0/DST'
date/time
support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/New_York
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 America/New_York America/New_York
Run Code Online (Sandbox Code Playgroud)
我创建了一个文件/etc/php.d/timezone.ini,其中包含以下内容:
[root@mercury php.d]# cat timezone.ini
; default time zone
date.timezone='America/New_York'
[root@mercury php.d]#
Run Code Online (Sandbox Code Playgroud)
我可以将时区更改为America/Los_Angeles(例如),并在apache重启后"date.timezone"字段正确更改.
但我仍然得到错误.
有任何想法吗?
---附加说明---
如果我更改/etc/php.d/timezone.ini文件:
[root@mercury php.d]# cat timezone.ini
; default time zone
date.timezone='America/Los_Angeles'
Run Code Online (Sandbox Code Playgroud)
我可以更改info.php输出:
日期
警告:phpinfo():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们在第1行的/home/0default/public_html/info.php中选择'America/New_York'作为'EDT/-4.0/DST'
date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/New_York
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 America/Los_Angeles America/Los_Angeles
Run Code Online (Sandbox Code Playgroud)
---附加说明---
对于那些正在学习的人(就像我一样),会加载几个.ini文件.在info.php输出中:
Configuration File (php.ini) Path /etc
Loaded Configuration File /home/0default/etc/php5/php.ini
Scan this dir for additional .ini files /etc/php.d
Additional .ini files parsed /etc/php.d/curl.ini, /etc/php.d/dom.ini, /etc/php.d/fileinfo.ini, /etc/php.d/gd.ini, /etc/php.d/imap.ini, /etc/php.d/json.ini, /etc/php.d/mbstring.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/odbc.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_odbc.ini, /etc/php.d/pdo_pgsql.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/pgsql.ini, /etc/php.d/phar.ini, /etc/php.d/snmp.ini, /etc/php.d/sqlite3.ini, /etc/php.d/timezone.ini, /etc/php.d/wddx.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlrpc.ini, /etc/php.d/xmlwriter.ini, /etc/php.d/xsl.ini, /etc/php.d/zip.ini
Run Code Online (Sandbox Code Playgroud)
第一个加载的是/etc/php.ini,然后是"加载的配置文件",然后是"扫描此目录"文件.
因此,例如,应该能够在不同的默认时区创建许多php网站.在/etc/php.ini中设置主默认值,然后允许每个网站具有"已加载..."部分中标识的不同时区.然后,如果关注任何覆盖,则master可以再次使用/etc/php.d文件覆盖.
我已经尝试更改三个位置中的每个位置的"date.timezone",并成功更改info.php显示的date.timezone ...但它不会修改"默认时区"值,即导致错误的值.
另外一点,我正在运行的.php脚本实际上是Blue.box,它是FreeSwitch的前端.所以...我在改变.php脚本时犹豫不决.
你有2个选择:
在使用任何日期函数之前调用此函数date_default_timezone_set().例如date_default_timezone_set("America/New_York");.
编辑通常位于的php.ini文件/usr/local/php/php.ini并更改date.timezone条目.以下是支持的时区列表.
| 归档时间: |
|
| 查看次数: |
19640 次 |
| 最近记录: |