php - 需要时区调试帮助

标签 php mysql symfony datetime ubuntu

我有一个 Ubuntu/Apache2/PHP (Symfony2)/MySQL 日期问题。我认为这是一个系统问题,因为我在开发环境中没有它,只有在 rec 和 prod 环境中。当我发布包含日期时间的表单时,数据库中输入的时间比我输入的时间少 2 小时。当我阅读它时,屏幕上的日期时间与数据库中的日期时间相同。 2 小时时差符合我的时区(欧洲/巴黎)。

开发环境:

  • 本地机器
  • Ubuntu 16.04 LTS 桌面
  • Apache/2.4.18 (Ubuntu)
  • Mysql 5.5.43-0+deb8u1 在局域网上的 Debian 8 虚拟主机上
  • PHP 7.0.8-0ubuntu0.16.04.2,Symfony 2.8.7

录制/制作环境:

  • 都在同一个专用服务器上
  • Ubuntu 15.10 服务器
  • Apache/2.4.12
  • MySQL 5.6.28-0ubuntu0.15.10.1
  • PHP 5.6.11-1ubuntu3.1

当我在两台机器上运行 date -R 时,我有一个匹配项:Sat, 24 Sep 2016 19:39:53 +0200,再过几秒钟 &更少,这是我输入命令所花费的时间。

/etc/timezone 在两台机器上都包含“Europe/Paris”。

在两台机器上,PHP 的(CGI 端)date.timezone 也是“Europe/Paris”。

在两台机器上,SQL 查询 SELECT @@global.time_zone, @@session.time_zone; 返回 "SYSTEM"& "SYSTEM"

我使用基于 moment.js 的引导日期时间选择器来输入此日期和时间。但我通过检查浏览器控制台中的 POSTed 数据并确认日期未被更改,将其从嫌疑人中排除。

两台机器上的应用程序代码相同(相同的颠覆版本)。

你看到其他东西要测试了吗?

最佳答案

可能是由于 this PR 最近才合并。

尝试改变这个

-            $dateTime = new \DateTime(sprintf('@%s', $timestamp), new \DateTimeZone($this->outputTimezone));
+            $dateTime = new \DateTime(sprintf('@%s', $timestamp));
+            // set timezone separately, as it would be ignored if set via the constructor,
+            // see http://php.net/manual/en/datetime.construct.php
+            $dateTime->setTimezone(new \DateTimeZone($this->outputTimezone));

DateTimeToLocalizedStringTransformerTest.php

参见 this .

关于php - 需要时区调试帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679532/

相关文章:

php - 删除月份的前几天 - PHP Array

python - 导入 mysql.connector ModuleNotFoundError : No module named 'mysql'

php - MySql 类似运算符,用于选择在移动设备中无法正常工作的所有记录

javascript - div 中两个变量的总和

php - 尝试从 symfony2 爬虫中选择一个表单时出错?

PHP-FPM 监听队列已满,我的配置有什么问题?

php - URL 未正确显示在浏览器地址栏中

javascript - php 类型转换出错?

mysql - 如何修改mysql存储过程中select的输出列名

symfony - Symfony2 Swiftmailer无法发送