正确设置 date.timezone on Windows 7 for PHP 5.4.35 binary only install

Correctly setting date.timezone on Windows 7 for PHP 5.4.35 binary only install

我正在为 NetBeans 中的一系列 PHP 类 编写单元测试(使用 PHPUnit 进行测试)。

这些 类 依赖于我不想模拟的 nusoap 脚本。

当我 运行 测试依赖 nusoap 作为依赖项时,我在 nusoap 脚本中得到了这个方法看似常见的 "It is not safe to rely on the system's timezone" 错误:

function getmicrotime() {
        if (function_exists('gettimeofday')) {
            $tod = gettimeofday();
            $sec = $tod['sec'];
            $usec = $tod['usec'];
        } else {
            $sec = time();
            $usec = 0;
        }
        return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
    }

所以,我进入了我的 php.ini 文件并添加了:

[Date]  
; Defines the default timezone used by the date functions ; 
; http://php.net/date.timezone 
date.timezone = "America/New_York"

我只使用 PHP 二进制文件。据我所知,没有 web 实例,因此只有 1 个 ini 文件需要修改。

当我重新运行 这些测试时,我立即从 PHPUnit 得到错误,并且没有测试 运行。如果我正常删除对 ini 文件的编辑,我的测试 运行。 "Normally" 被定义为测试return 具有相同时区错误的失败

网络上的许多其他答案建议在两个地方编辑 ini 文件,一个用于网络,一个用于 CLI。但是,由于我只有 1 个 ini 文件,我不确定还需要修改什么才能正确识别时区。

如何在安装了 PHP 5.4.35 二进制文件(根本没有 IIS)的 Windows 7 机器上完成这项工作?我也尝试将 date_default_timezone_set( 'America/New_York' ); 添加到 nusoap 脚本中,但这似乎没有效果。

谢谢。

这是一条红鲱鱼,也很难找到。

我回到基础并在我的 PHP.INI 文件中挖掘,发现我使用的是 test/prod 版本,所以我决定尝试开发版本。

运行 在 NetBeans 和 CLI 中的测试,我现在能够看到 "real" 根本原因,这与我正在测试的 class 相关。除非在 PHP.INI 中配置,否则根本不会向用户显示任何信息。