在运行一个用于安装Blue.box(FreeSwitch PBX的前端)的php安装脚本时,我遇到了一个关于时区失败的错误。
然后我开始调查。此时我不确定发生了什么,但这是我所拥有的:
我在我的public_html目录中创建了一个包含单行代码的info.php文件:
并且我得到了以下错误和输出:
警告:phpinfo():依赖系统时区设置是不安全的。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法但仍然收到此警告,则很可能您拼写错误的时区标识符。我们选择“America/New_York”作为“EDT/-4.0/DST”的代替。位于/home/0default/public_html/info.php的第1行
我创建了一个文件/etc/php.d/timezone.ini,内容如下:
首先加载的是/etc/php.ini文件,然后是"loaded configuration file",最后是"scan this dir"文件。
例如,一个人应该能够创建多个具有不同默认时区的PHP网站。在/etc/php.ini中设置主默认值,然后允许每个网站在"loaded..."部分中确定不同的时区。然后,如果担心任何覆盖,主服务器可以再次通过/etc/php.d文件进行覆盖。
我已经尝试在三个位置中更改"date.timezone",并成功更改了info.php中显示的date.timezone值...但它没有修改"Default timezone"值,这是导致错误的值。
另一个注意点,我正在运行的.php脚本实际上是Blue.box,它是FreeSwitch的前端。因此...我不想更改那个.php脚本。
然后我开始调查。此时我不确定发生了什么,但这是我所拥有的:
我在我的public_html目录中创建了一个包含单行代码的info.php文件:
并且我得到了以下错误和输出:
警告:phpinfo():依赖系统时区设置是不安全的。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法但仍然收到此警告,则很可能您拼写错误的时区标识符。我们选择“America/New_York”作为“EDT/-4.0/DST”的代替。位于/home/0default/public_html/info.php的第1行
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
我创建了一个文件/etc/php.d/timezone.ini,内容如下:
[root@mercury php.d]# cat timezone.ini
; default time zone
date.timezone='America/New_York'
[root@mercury php.d]#
我可以把时区更改为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'
我可以改变info.php的输出:
日期
警告:phpinfo():依赖于系统时区设置是不安全的。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法但仍然收到此警告,则很可能拼写错误的时区标识符。我们选择了“美国/纽约”代替“EDT/-4.0/DST”。位于/home/0default/public_html/info.php第1行。
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
--- 额外说明 ---
对于正在学习(就像我一样)的人来说,将加载多个 .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
首先加载的是/etc/php.ini文件,然后是"loaded configuration file",最后是"scan this dir"文件。
例如,一个人应该能够创建多个具有不同默认时区的PHP网站。在/etc/php.ini中设置主默认值,然后允许每个网站在"loaded..."部分中确定不同的时区。然后,如果担心任何覆盖,主服务器可以再次通过/etc/php.d文件进行覆盖。
我已经尝试在三个位置中更改"date.timezone",并成功更改了info.php中显示的date.timezone值...但它没有修改"Default timezone"值,这是导致错误的值。
另一个注意点,我正在运行的.php脚本实际上是Blue.box,它是FreeSwitch的前端。因此...我不想更改那个.php脚本。
phpinfo()
函数可以告诉你使用了哪些.ini文件。 - Marc B"
)而不是单引号('
),或者干脆删除引号。 - Matt Johnson-Pint