标题:[实践OK][FreeBSD] 修改系統時間 UTC->CST,FREEBSD时间设置与时区设置教程,及PHP 5.6.33下Owncloud错误日志error_log少了8小时的问题排查。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Sun, 11 Feb 2018 11:32:40 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9633/ 内容: 总结:本质上是因为PHP的应用程序Owncloud他自己的设置引起了PHP的应用日志时间少了8小时,而PHP的设置 是没有毛病的,如下: ./lib/base.php: date_default_timezone_set('UTC'); ##修改为:date_default_timezone_set('Etc/GMT-8'); ================================================================================= 零、系统时间正确: date Sun Feb 11 11:30:16 CST 2018 UTC----全球标准时间指的是由世界时间标准设定的时间。原先也被称为格林威治标准时间或者 GMT CST----CMOS时间,即本机的时间! PHP.ini里也配置了:date.timezone = Asia/Shanghai: 在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC或者date.timezone = Asia/Shanghai,同时取消这一行代码的注释,即去掉前面的分号就可以了。 /usr/local/php/etc/php-fpm.conf里,同样两个日志时间不对: 一、应用错误日志少了8小时: php-fpm.conf php_admin_value[error_log] = /data/logs/php/php-www-error.log /data/logs/php/php-www-error.log [11-Feb-2018 02:58:53 UTC] PHP Fatal error: Allowed memory size of 18874368 bytes exhausted (tried to allocate 2048 bytes) in /data/www/xdxp.cn/lib/private/preview/txt.php on line 60 二、这个php-fpm-error日志和系统时间保持一致: [global] error_log = /data/logs/php/php-fpm-error.log 这个是对的: /data/logs/php/php-fpm-error.log <== [11-Feb-2018 10:58:37] WARNING: [pool www] server reached pm.max_children setting (6), consider raising it 刚开始认为是FreeBSD的时区问题,但实际上不是它的问题,如下: FreeBSD 11.1 PHP日志出现: [11-Feb-2018 03:06:39 UTC] PHP Fatal error: Allowed memory size of 18874368 bytes exhausted (tried to allocate 2048 bytes) in /data/www/xdxp.cn/lib/private/preview/txt.php on line 60 系统时间:date Sun Feb 11 11:18:57 CST 2018 因为刚安装系统是使用UTC时间,所以安装系统后,需要设置回上海时区!操作需要root权限! #adjkerntz -a 调节COMS时间 #date 时间相差8小时, 可能是一个Bug:https://bugs.php.net/bug.php?id=60723 ,但是是 很多年前了,我这都PHP 5.6.33 (cli) (built: Feb 11 2018 10:42:42) ,不存在,后来也证明是Owncloud代码的问题。 http://bbs.csdn.net/topics/390091176里说:php_errors.log (/data/logs/php/php-www-error.log)人家打的是gmtime,你系统时间是localtime,差8小时是正确的,你得想办法配置php_errors.log输出的是localtime就和系统时间一致了,懂吗。 原来是Owncloud是老外做的,设置的date_default_timezone_set可能不一样导致: #grep -r "date_default_timezone_set" ./ ./3rdparty/sabre/vobject/lib/TimeZoneUtil.php: * (as configured using date_default_timezone_set, or the date.timezone ini ./3rdparty/mcnetic/zipstreamer/src/ZipStreamer.php: date_default_timezone_set('UTC'); ./3rdparty/mcnetic/zipstreamer/src/ZipStreamer.php: date_default_timezone_set($oldTZ); ./apps/files_external/3rdparty/icewind/streams/tests/bootstrap.php:date_default_timezone_set('UTC'); ./apps/files_texteditor/js/vendor/ace/src-noconflict/mode-php.js: 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' + ./lib/base.php: date_default_timezone_set('UTC'); ##修改为:date_default_timezone_set('Etc/GMT-8'); 成功修复: ./lib/base.php: date_default_timezone_set('UTC'); ##修改为:date_default_timezone_set('Etc/GMT-8'); 手动修改后就OK了,就是PHP代码上作了修改引起的!!! [11-Feb-2018 11:44:32 Etc/GMT-8] PHP Fatal error: Allowed memory size of 18874368 bytes exhausted (tried to allocate 2048 bytes) in /data/www/xdxp.cn/lib/private/preview/txt.php on line 60 灵感来源,下面代码的日志时间正确,date_default_timezone_set('Etc/GMT-8'); //设置时区,这块有关系,于是查Owncloud是否一样?果然不一样,修改了再测试就发现Owncloud对了: error.class.php 0) { switch($user_defined_err['type']){ case 1: $user_defined_errType = '致命的运行时错误(E_ERROR)'; break; case 2: $user_defined_errType = '非致命的运行时错误(E_WARNING)'; break; case 4: $user_defined_errType = '编译时语法解析错误(E_PARSE)'; break; case 8: $user_defined_errType = '运行时提示(E_NOTICE)'; break; case 16: $user_defined_errType = 'PHP内部错误(E_CORE_ERROR)'; break; case 32: $user_defined_errType = 'PHP内部警告(E_CORE_WARNING)'; break; case 64: $user_defined_errType = 'Zend脚本引擎内部错误(E_COMPILE_ERROR)'; break; case 128: $user_defined_errType = 'Zend脚本引擎内部警告(E_COMPILE_WARNING)'; break; case 256: $user_defined_errType = '用户自定义错误(E_USER_ERROR)'; break; case 512: $user_defined_errType = '用户自定义警告(E_USER_WARNING)'; break; case 1024: $user_defined_errType = '用户自定义提示(E_USER_NOTICE)'; break; case 2048: $user_defined_errType = '代码提示(E_STRICT)'; break; case 4096: $user_defined_errType = '可以捕获的致命错误(E_RECOVERABLE_ERROR)'; break; case 8191: $user_defined_errType = '所有错误警告(E_ALL)'; break; default: $user_defined_errType = '未知类型'; break; } $msg = sprintf('%s %s %s %s %s',date("Y-m-d H:i:s"),$user_defined_errType,$user_defined_err['message'],$user_defined_err['file'],$user_defined_err['line']); error_log($msg,0); } } register_shutdown_function('exceptionHandler'); ?> a.php 产生错误时间正确: [11-Feb-2018 11:39:08 Asia/Shanghai] 2018-02-11 11:39:08 运行时提示(E_NOTICE) Undefined variable: _SESSION /data/www/comm.jackxiang.com/a.php 5 [11-Feb-2018 11:41:59 Asia/Shanghai] PHP Notice: Undefined index: aaaaadfa in /data/www/comm.jackxiang.com/a.php on line 4 [11-Feb-2018 11:41:59 Asia/Shanghai] PHP Notice: Undefined variable: _SESSION in /data/www/comm.jackxiang.com/a.php on line 5 [11-Feb-2018 11:41:59 Asia/Shanghai] 2018-02-11 11:41:59 运行时提示(E_NOTICE) Undefined variable: _SESSION /data/www/comm.jackxiang.com/a.php 5 关于这个date_default_timezone_set的一些时间值列表:来自@https://zhidao.baidu.com/question/383369268.html date_default_timezone_set("Etc/GMT").:是格林威治标准时间,得到的时间和默认时区是一样的 ate_default_timezone_set("Etc/GMT+8");比林威治标准时间慢8小时, date_default_timezone_set("Etc/GMT-8");东八区,我们比那快8小时所以减8 或者使用:date_default_timezone_set('PRC')设置中国时区 最后,更多关于FreeBSD的时间设置知识: ---------------------------------------------[FreeBSD] 修改系統時間 UTC->CST------------------------------------------------------------ 剛安裝好系統是屬於格林時間,所以去設定一下如何弄回去内地 GMT+8 的時間 有2種方式~一個用圖形介面: 1、#tzsetup 是一個不錯的 timezone 設定工具 , 進去之後選擇 5.Asia -> ShangHai 2、另一個方法是: #cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime #adjkerntz -a #date #Sat Jun 23 10:50:40 CST 200 ps:(adjkerntz = adjust kernal timezone) 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1808/showart_492283.html 来自:https://www.west.cn/info/html/caozuoxitong/FreeBSD/20090513/132105.html 最近手上弄了台FreeBSD系统的VPS,因为系统无法更换,所以就只能用这么用着了,第一次配置的时候记得配置了时区,可是仍旧显示不正确。这样子看系统日志的时候就不是太方便,因为时间老是不对,虽然这台服务器打算是专门做SSH代×理滴,需要滴联系奶牛哈~~~点此联系 下面说说设置,首先要进入一个root shell #sysinstall 依次进入 configure→Time Zone→UTC = no→ Asia → China→ Beijing,Guangdong,Shanghai etc. Does the abbreviation `CST’ look reasonable? = OK 提示选择yes,然后退出sysinstall就可以了。 查看日期的命令是data 同步时间的命令是 ntpdate nist1.symmetricom.com 参考:http://www.nenew.net/freebsd-time-zone-setting.html https://www.west.cn/info/html/caozuoxitong/FreeBSD/20090513/132105.html Generated by Jackxiang's Bo-blog 2.1.1 Release