كيفية تحديث TimeZonedB في PHP (تحديث معلومات الزمن)؟

StackOverflow https://stackoverflow.com/questions/3564478

  •  01-10-2019
  •  | 
  •  

سؤال

يعرض phpinfo () نظامنا أنه يستخدم "Olson" TimeZone Database Version 2010.3 ". أنا فكر في هذا الآن قديم ، لكن لا يمكن تحديد موقع موقع موثوق به يمكن أن يؤكد ذلك.

(أ) هل يمكنني تحديث معلومات المناطق الزمنية لـ PHP ككل؟ (ب) إذا كان الأمر كذلك ، كيف يمكنني تحديث هذا؟ رأيت التعليمات في http://www.electrictoolbox.com/correct-php- حيث تقول ذلك ، بعد تثبيت الوحدة النمطية المناسبة ، تقول إن علي:

You should add "extension=timezonedb.so" to php.ini

هل نحتاج إلى القيام بذلك؟ ألا ينبغي أن يكون PHP استخدام الملف الصحيح تلقائيًا؟

لا يوجد حل صحيح

نصائح أخرى

بقدر ما أعرف يتم توزيع TimeZone DB (TDB) داخل PHP نفسها. بسبب ذلك ، تصبح المنطقة الزمنية DB قديمة بعد بعض الوقت ويجب عليك إما تحديث PHP أو TDB لتعكس التغييرات في TDB.

هناك امتداد PECL الذي يطلق حزم TDB جديدة يمكنك تنزيلها وتثبيتها واستخدامها في تثبيتات PHP القديمة.

لست على علم أن هناك طريقة لتحديث TDB مباشرة في PHP. تم إنشاء امتداد PECL لاستهداف هذه المشكلة.

من الأفضل فقط تحديث إصدار PHP الخاص بك (بشكل خاص ، إذا كنت ترغب في تحديثه على جهاز Windows ، وإلا يجب عليك تجميع الامتداد بنفسك) لأنه بقدر ما أتذكر أن الامتداد ليس جاهزًا لنظام التشغيل Windows فقط/ Linux - لذلك إذا كنت تريد القيام بذلك على Windows ، فسيتعين عليك تجميعها بنفسك باستخدام برنامج التحويل البرمجي VC6 أو VC9).

لذلك ، إذا كان بإمكانك تحديث إصدار PHP الخاص بك والذي سيكون أسرع الحلول (كان على الأقل بالنسبة لي) ، فقد لا يكون لدى PHP من طبعات الأوقات إلى أحدث معلومات DB ولكن كان علي حل مشكلة مع Timezone DB وتم إصلاحها في إصدار لاحق من PHP الذي كان لدي. إذا كنت تفعل ذلك من أجل UNIX/Linux ، فقد تجرب أيضًا امتداد PECL ، أعتقد أنه قد يكون أسهل وأسرع بالنسبة لك بعد ذلك.

امتداد PECL هو حرفيا المنطقة الزمنية ديسيبل. في كل مرة يتم إصدار نسخة جديدة من DB هنا, ، تم إعادة ترجمة الامتداد باستخدام TimeZone DB المحدث.

لذلك ، يمكنك بالفعل الكتابة فوق الامتداد القديم مع الإصدار الذي تم إعادة تدويره حديثًا وإعادة تشغيل خادم الويب الخاص بك ؛ على افتراض استخدام PHP كوحدة.

للقيام بتحديث كامل للمنطقة الزمنية (واجهنا مشاكل مع المنطقة الزمنية غير الصحيحة في روسيا / موسكو):

#for OS - CentOS and MySQL
yum update tzdata
mysql_tzinfo_to_sql /usr/share/zoneinfo
#for PHP
pecl upgrade timezonedb
pecl upgrade intl

#dependencies you may need for the above:
yum install gcc 
yum install gcc-c++
yum install libicu-devel
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top