出于某种原因,PHP 开发人员不久前决定他们不想信任系统提供的时区信息。因此,如果您在 OSX 下的 PHP 脚本要使用任何时间/日期函数,则必须执行以下操作:
date_default_timezone_set ("Europe/London");
现在,我不知道我的脚本将在地球上的哪个地方执行,并且期望普通用户必须提供时区字符串是不合理的 - 用户会说,相当合理,他们已经在系统首选项中设置它为什么我不能在那里寻找它。
所以,到目前为止,我一直在做:
$cmd = '/usr/sbin/systemsetup -gettimezone';
exec ($cmd, $results, $result);
并挑选结果以获取要使用的字符串。到目前为止,一切都很好。现在我观察到两件事:
该命令的手册页坚持我需要“至少 admin priv 才能运行”。我在没有 admin priv 的帐户上尝试过,确实是这样,所以从长远来看,我需要另一种方法。
我碰巧在 System Preferences -> Date&Time 中锁定了 TimeZone 窗格,并且反复观察到,每当此窗格被锁定时,我在上面给出的 systemsetup 命令在响应之前会暂停 30 秒。如果我解锁 TimeZone 窗格,它会在通常的短时间内做出响应。
有谁知道为什么会这样?
其次,是否有人知道我可以执行的替代命令来给我时区,不需要管理员权限?
谢谢,