با لغو شدن قانون تغییر ساعت بسیاری از نرم افزارها از جمله php ساعت رو یک ساعت جلو (مطابق قانون تغییر ساعت در تابستان) نمایش میدهند. برای برطرف کردن این مشکل در php میتوانید از این پست استفاده کنید.
برای حل این مشکل میتوان از روشهای زیر استفاده کرد:
بهترین روش برای رفع مشکل ساعت تابستانی ایران مهاجرت به آخرین نسخه های php است. مشکل ساعت ایران در نسخه های بروز php 8 برطرف شده است. اما اگر کدهای شما قابلیت اجرا در php 8 را ندارد باید از روش دیگری استفاده کرد:
این روش برای php 5 و php 7 میتوان اجرا کرد. ابتدا افزونه timezonedb را نصب میکنیم:
pecl install timezonedb
سپس در php.ini خط زیر را اضافه می کنیم.
extension=timezonedb.so;
کافیست دستور زیر را به Dockerfile اضافه کنیم تا افزونه timezonedb نصب شود:
RUN pecl install timezonedb \
&& bash -c "echo extension=timezonedb.so > /usr/local/etc/php/conf.d/docker-php-ext-timezonedb.ini"
ابتدا timezonedb را از لینک گیتهاب پروژه دانلود کنید. سپس از حالت فشرده خارج کرده و در مسیر Dockerfile قرار میدهیم. سپس کافیست دستورات زیر را به Dockerfile اضافه کنیم تا افزونه timezonedb نصب شود:
RUN apk add php7-dev make
RUN apk add gcc musl-dev
COPY ./pecl-timezonedb /pecl-timezoned
RUN cd /pecl-timezonedb && ./rebuild.sh && make install
RUN echo "extension=timezonedb.so" >> /etc/php7/conf.d/01_timezone.ini
هدف از پست معرفی ایده کلی رفع مشکل ساعت در php بود. بدلیل اینکه php در محیطهای مختلف اجرا میشود ممکن است نیاز باشد از روشهای دیگر برای آپدیت این افزونه استفاده کنید.