何らかの理由で、PHP開発者は、システムから入手できるタイムゾーン情報を信頼したくないと少し前に判断しました。したがって、OSXでのPHPスクリプトは、任意の日時関数を使用する場合、次のようなことを行う必要があります。
date_default_timezone_set ("Europe/London");
さて、私のスクリプトが地球上のどこで実行されるのかわかりません。通常のユーザーがタイムゾーン文字列を指定する必要があると期待するのは不合理です。ユーザーは、かなり合理的に、すでに実行していると言うでしょう。システム設定でそれを設定して、なぜそこでそれを探すことができないのか。
だから、今まで、私はやっています:
$cmd = '/usr/sbin/systemsetup -gettimezone';
exec ($cmd, $results, $result);
結果を選択して、使用する文字列を取得します。ここまでは順調ですね。今私は2つのことを観察します:
このコマンドのマニュアルページには、「実行するには少なくともadminpriv」が必要であると記載されています。admin privのないアカウントで試しましたが、これは確かに当てはまるので、長期的には別のアプローチが必要になります。
たまたま[システム環境設定]->[日付と時刻]でタイムゾーンペインをロックしましたが、このペインがロックされるたびに、上記のsystemsetupコマンドが応答する前に正確に30秒間一時停止することを繰り返し観察しました。TimeZoneペインのロックを解除すると、通常の短時間で応答します。
なぜこれが起こっているのか誰かが知っていますか?
次に、管理者権限を必要としないタイムゾーンを指定するために実行できる代替コマンドを知っている人はいますか?
ありがとう、