【问题标题】:DateTime not responding on server changeDateTime 对服务器更改没有响应
【发布时间】:2016-05-11 01:22:56
【问题描述】:

我最近将一个站点从共享主机迁移到了虚拟专用服务器。 在共享主机上我有 PHP 5.2,在 VPS 上我有 PHP 5.3.3。 在此迁移之后,DateTime 类停止响应。 以下代码过去可以正常工作,但现在我只得到 $test 输出。

$test = $vMonth.'/'.$vDay.'/'.$vYear;
echo $test;
$date = new DateTime($test);
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo $error."\n";
    }
    echo "step1";
} else {
    echo $date;
    echo "step2";
}
$vBday = date_format($date, 'Y-m-d H:i:s');
echo "Test0";

有人知道这是否是一个已知问题吗?或者是否有解决方法? 谢谢!

编辑(php.ini):

error_reporting = E_ALL & ~E_DEPRECATED
log_errors = On
display_errors = On
error_log = /tmp/php_errors.log

【问题讨论】:

  • 检查错误日志,并确保您使用的是E_ALL错误日志记录级别
  • error_reporting = E_ALL & ~E_DEPRECATED
  • 那么错误日志呢?如果 php 死了 - 这是有原因的
  • 我配置了 php.ini 来保存日志,但它甚至还没有被创建
  • 下次它不会显示错误时,将以下内容添加到 php 脚本的顶部:ini_set('display_errors', 1); error_reporting(E_ALL);

标签: php php-5.3 plesk centos6


【解决方案1】:

我找到了解决问题的方法。 显然,这个类在 5.3 上做了很多工作。主要是为了支持欧洲+美国的日期样式,并增加对更多格式的支持。这一定包括对构造函数的意外更改,因为它无法识别我以前的格式。 解决方案是选择create from formatISO 8601

$test = $vYear.'-'.$vMonth.'-'.$vDay;
$date = date_create_from_format("Y-n-j",$test);
$vBday = date_format($date, 'Y-m-d H:i:s');

【讨论】:

    【解决方案2】:

    检查 date.timezone 是否在 php.ini 上设置为正确的值。看起来在某些服务器(或 PHP 版本?)上是必要的......

    【讨论】:

    • 原始问题三岁生日快乐! :P
    猜你喜欢
    • 2014-02-11
    • 2014-06-04
    • 2011-08-22
    • 2017-01-09
    • 2017-01-04
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多