在 Windows 7 上正确设置 date.timezone 以进行 PHP 5.4.35 二进制安装


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

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

这些类依赖于我不想嘲笑的 nusoap 脚本。

当我运行依赖 nusoap 作为

依赖项的测试时,我在 nusoap 脚本中收到此方法似乎常见的"依赖系统的时区不安全"错误:

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 文件的编辑,我的测试将正常运行。"正常"定义为测试返回具有相同时区错误的失败

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

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

谢谢。

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

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

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