【问题标题】:PHP stops execution when it reaches a line of codePHP 在到达一行代码时停止执行
【发布时间】:2012-04-05 09:26:40
【问题描述】:

我正在为 Wordpress 编写一个 PHP 脚本,我正在对我们的系统进行 API 调用,它包含一个 .Net 到 Json 格式的 DateTime 字符串。使用正则表达式,我已将其缩减到自 Unix 纪元以来的秒数。据我了解,我应该能够使用 DateTime::createFromFormat('U', $time); 从中创建一个 DateTime 对象。但是脚本在遇到它时会停止执行(它会执行到目前为止的所有内容)。我将它包装在一个 try/catch 中,但即使它没有被执行,我猜它只是简单地“死”了。

这是怎么回事?

preg_match_all('/\d+/', $post->discussion->posttime, &$ms);
$ms = $ms[0];
var_dump($ms[0]);
$time = substr($ms[0], 0, strlen($ms[0]) - 3);
var_dump($time);
$date = DateTime::createFromFormat('U', $time);
//Nothing after the above line is executed
var_dump($date);
...

页面的输出如下:

string(13) "1332244919776" 
string(10) "1332244919"

我在显示 DateTime 行之后没有放置任何内容(或者据我所知,已执行)。我从网上使用了有效的 Unix 时间戳,但它仍然不起作用。我也尝试过具有匹配日期字符串格式的其他格式('Y-m-d'),但都没有奏效。使用 new DateTime() 创建一个常规的“现在”DateTime 对象;虽然有效。

【问题讨论】:

  • 在其他任何内容之前添加此行:error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);。然后运行您的脚本并让我们知道输出。
  • 是的,间接答案是您应该打开错误报告并找出问题所在。添加建议的行 simplecoder。您可能还需要添加ini_set("display_errors", "1"); 行。

标签: php unix datetime epoch


【解决方案1】:

这听起来像是关闭了错误报告的致命错误。

问题的最可能原因是您使用的是 php createFromFormat 的支持,而 5.2 版中添加了DateTime 对象。

【讨论】:

    猜你喜欢
    • 2014-02-22
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多