处理php出现default timezone抖动的问题
懒癌发作1年多,再次回来写随笔。(上次是16年,再上次是13年,好像懒的没救了)
这回遇到一个系统前端展现的时间在无规律抖动的问题;
前端php环境是5.3,运行于apache上,php.ini中已经设置了date.timezone="Asia/Shanghai",php中不显示设定任何的date_default_timezone_set();
使用phpinfo查看,date.timezone确实是上海,但Default timezone就时不时飘到了太平洋去;
同事帮我分析了一下,并给了官方文档说明default timezone的选定顺序,http://php.net/manual/zh/function.date-default-timezone-get.php:
date_default_timezone_set() > 环境变量TZ > date.timezone > 查询操作系统;(php version < 5.4)
or
date_default_timezone_set() > date.timezone;(php version >= 5.4)
同事怀疑我有定时程序在不断修改环境变量TZ,但是apache是通过发行版的源安装的,apache用户更是nologin,没有机会启动定时程序进行环境变量修改;一时无果;
后来又仔细分析了phpinfo的区别,发现当时区飘到太平洋的时侯,php的Environment里面确实会出现一条TZ变量,正常时没有;
同时一起出现的新增环境变量还有一个django.setting,我才突然想起来,这个apache服务器后面还跑着一个python(django)项目,然后到那个django项目中一查,确实设定了一个错误的时区;
把django.setting中的错误时间给改过来后,过一点时间后(可能是在等缓存过期),时区抖的问题就消失了;
于是从头疏理一遍问题发生的过程:
- apache后面跑了两个项目:一个php项目,一个python项目;
- python项目的wsgi模式设置的为WSGIScriptAlias;
- php版本为5.3;
- python项目会在运行中修改环境变量TZ(受django设定),如果一个apache子进程运行了这个python项目,这个子进程就会增加一个TZ环境变量;
- php项目不显式设定date_default_timezone_set,当它运行于一个全新的apache子进程中时,会使用date.timezone,而当它运行于一个已经运行过python项目的apache子进程中时,会看到TZ环境变量,从而拿到错误的timezone;
于是,我也就明白了为啥从php 5.4开始抛弃TZ了;
处理php出现default timezone抖动的问题的更多相关文章
- PHP Warning: phpinfo(): It is not safe to rely on the system's timezone setting
错误描述: PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *re ...
- Airflow 使用随笔(内含 TimeZone 和 Backfill 等的详解)
其实怎么部署 airflow 又哪些特性,然后功能又是如何全面都可以在 Reference 的文章里面找到,都不是重点这里就不赘述了. 这里重点谈一下我在部署完成仔细阅读文档之后觉得可以总结的一些东 ...
- 一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
点亮 ️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 本文目录 1 DolphinScheduler的设计与策略 1.1 分布 ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
- 初识Azkaban
先说下hadoop 内置工作流的不足 (1)支持job单一 (2)硬编码 (3)无可视化 (4)无调度机制 (5)无容错机制 在这种情况下Azkaban就出现了 1)Azkaban是什么 Azkaba ...
- Wiki安装(PHP +Sqlite+Cache)
前期准备 PHP http://windows.php.net/download WinCache Extension for PHP URL:http://sourceforge.net/pro ...
- Django 1.10 中文文档------3.2.1 模型Models
3.2.1 models模型 通常一个模型映射一张单独的数据表. 基本概念: 每个model都是django.db.models.Model的子类 model的每个属性代表数据表的某一列 Django ...
- zabbix3.0安装【server】
关于zabbix的介绍,就不多说了,功能强大,架构前卫,自己直接去官网研究 在这里,还是秉承研究一个应用或者技术,都要自己动手安装部署,实战操作,才能深入掌握,基于这个精神,zabbix从安装部署开始 ...
- CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)
关于 Nginx (发音 “engine x”)这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教程演示如何在CentOS 6.5服务器(适用 ...
随机推荐
- java并发包分析之———BlockingQueue
一.概述: BlockingQueue作为线程容器,可以为线程同步提供有力的保障. 二.BlockingQueue定义的常用方法 1.BlockingQueue定义的常用方法如下: 抛出异常 ...
- Ajax的简单使用
仅介绍Ajax的使用,让入门小白快速上手 //请自行引入jQuery库文件 <script type="text/javascript"> $(function() { ...
- get请求URL的转码
String name = new String(json.getString("name").getBytes("iso8859-1"),"UTF- ...
- 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)
[摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...
- Django和Angular.js模板标签冲突的解决方式
参考文章:http://yanhua365.lofter.com/post/b417f_1f0361 http://stackoverflow.com/questions/8302928/angula ...
- 正确截取List指定位置的内容
正确截取List指定位置的内容 import java.util.ArrayList; import java.util.List; public class ListUtils { public s ...
- 大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版
详情请点击查看 开发环境 :VS2010 + C# + ORACLE系统简介:1各种记录的书写,并可保留修改痕迹 在各种记录的书写过程中,根据系统提供的首次护理记录.一般护理记录.术前术后护理记录等模 ...
- PHP_保留两位小数并且四舍五入(可用于精度计算)_保留两位小数并且不四舍五入
小数例子: PHP保留两位小数并且四舍五入 1 $n=0.1265489; 2 echo sprintf("%.2f", $n); // 0.13 大家可以看到我们用到了sprin ...
- FastDFS单机版安装
FastDFS 分布式文件系统 1 目标 了解项目中使用FastDFS的原因和意义. 掌握FastDFS的架构组成部分,能说出tracker和storage的作用. 了解FastDFS+nginx上传 ...
- JVM GC-----垃圾回收算法
说到Java,一定绕不开GC,尽管不是Java首创的,但Java一定是使用GC的代表.GC就是垃圾回收,更直接点说就是内存回收.是对内存进行整理,从而使内存的使用尽可能大的被复用. 一直想好好写一篇关 ...