处理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服务器(适用 ...
随机推荐
- 【CloverETL培训】题目
具体要求: 导入: 1.在CRM中,创建相应物理表,存储Follow/Binding记录.openid作为逻辑主键 2.Follow/Binding导入相互不影响,一个失败另外一个继续执行 3.Fol ...
- Vue--学习过程中遇到的坑
在这里总结一下学习Vue遇到的易错点,持续更新 1.实例化一个Vue对象: 通过new Vue({ el:'#id', data:{ a:'字符串1', b:‘字符串2’ }) 这里的Vue必须大写V ...
- 从有值的ID到汉字编码
前些日子漫无目的地刷着朋友圈,突然一个ID从字丛中闯入我的眼睛--"某&字"(为保护当事人隐私,此处用'某''字'代替),浸淫于计算机而产生的直觉告诉我,这是一个有值的表达 ...
- Download and Install Apache Zookeeper on Ubuntu
http://www.techburps.com/misc/download-and-install-apache-zookeepr/36 In previous article of this Bi ...
- Java 面试知识点解析(三)——JVM篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- js基础进阶--关于setTimeout的思考
欢迎访问我的个人博客:http://www.xiaolongwu.cn 先热身 看看下面的额代码会打印出什么? for (var i = 0; i < 5; i++) { setTimeout( ...
- Spring Boot实战笔记(三)-- Spring常用配置(Bean的初始化和销毁、Profile)
一.Bean的初始化和销毁 在我们的实际开发的时候,经常会遇到Bean在使用之前或之后做些必要的操作,Spring对Bean的生命周期操作提供了支持.在使用Java配置和注解配置下提供如下两种方式: ...
- 微信小游戏开发之四:使用three.js引擎
一.前言 微信小游戏中最魔性的'跳一跳'就是基于three.js 引擎开发的 源码放到github上了:GitHub地址 请自行下载. 二.下载 three.min.js 打开页面,复制代码到本地 ...
- Java 标准 I/O 介绍
一.Java标准I/O知识体系图: 二.I/O是什么 I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 三.Java I/O 用途与对应的流一览 ...
- Redis之实战篇(与Mybatis整合)
摘要: 现在市面流行的java框架,一个是ssh(spring.struts2.hibernate),另一个是ssm(spring.springmvc.mybatis),由于之前已经有整合过ssm框架 ...