وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

تنظیم منطقهٔ زمانی PHP و سرور دایرکت ادمین

ساعت سیستم، منطقهٔ زمانی و نمایش تاریخ PHP سه موضوع مرتبط اما جدا هستند. ساعت نادرست می‌تواند TLS، لاگ و کار زمان‌بندی‌شده را مختل کند.

انتشار:
آخرین ویرایش:
توسط مصطفی جانقربان
۳ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله تنظیم منطقهٔ زمانی PHP و سرور دایرکت ادمین در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
فرض کنید نوشته ساعت ۱۲ ثبت می‌شود ولی روی سایت ساعت دیگری می‌بینید. اول در تنظیمات خود برنامه، منطقهٔ زمانی را ببینید. در وردپرس، از تنظیمات عمومی می‌توان منطقهٔ زمانی را انتخاب کرد. انتخاب تهران با جابه‌جا کردن همهٔ تاریخ‌های داخل دیتابیس یکسان نیست.

ساعت تهران را کجا انتخاب کنیم؟

برای PHP، نام معتبر منطقهٔ زمانی تهران Asia/Tehran است و گزینهٔ مربوط date.timezone نام دارد. باید آن را در تنظیم PHP مورد استفادهٔ همان سایت قرار دهیم. اگر هاست چند نسخهٔ PHP دارد، فایل تنظیم نسخهٔ دیگر ممکن است روی سایت شما هیچ اثری نداشته باشد.
بعد یک زمان نمونه را از برنامه بخوانید و یک نوشتهٔ زمان‌بندی‌شدهٔ آزمایشی بسازید. ببینید نمایش ساعت و لحظهٔ انتشار هر دو مطابق انتظارند. اگر ساعت سیستم واقعاً عقب یا جلو است، همگام‌سازی ساعت موضوع جداگانه‌ای است؛ تغییر منطقهٔ زمانی فقط شکل نمایش همان لحظه را عوض می‌کند.

ساعت واقعی و timezone

ساعت واقعی باید با منبع معتبر همگام باشد. منطقهٔ زمانی تعیین می‌کند همان لحظه چگونه برای کاربر نمایش داده شود. ممکن است سرور UTC نگه دارد و برنامه زمان تهران را نمایش دهد؛ این به‌خودی‌خود خطا نیست. مسئله زمانی ایجاد می‌شود که برنامه یا گزارش، یک مقدار را با تفسیر متفاوت بخواند.
یک زمان نمونه را از سیستم و از داخل برنامه بررسی کنید. مقدار، منطقهٔ زمانی و نوع خروجی را کنار هم ثبت کنید. فقط مقایسهٔ دو عدد روی صفحه، بدون دانستن timezone آن‌ها، برای تشخیص کافی نیست.

PHP مؤثر سایت

در دایرکت ادمین ممکن است چند نسخهٔ PHP فعال باشد. فایل تنظیم مؤثر وب با php.ini خط فرمان می‌تواند فرق داشته باشد. نسخه و تنظیم سایت را از همان محیط وب بررسی کنید؛ تغییر CLI ممکن است روی وردپرس یا برنامهٔ وب اثری نداشته باشد.
برای PHP، شناسهٔ معتبر منطقهٔ زمانی مانند Asia/Tehran استفاده می‌شود. نام شهر یا یک اختلاف ساعت ثابت را به‌صورت حدسی جایگزین نکنید. تنظیم باید با دادهٔ منطقهٔ زمانی و نسخهٔ PHP سازگار باشد. اگر برنامه تنظیم مستقل دارد، آن را نیز با هدف نمایش و ذخیره هماهنگ کنید.

زمان‌بندی و دادهٔ موجود

پیش از تغییر، روش ذخیرهٔ زمان در برنامه را بشناسید. دادهٔ موجود ممکن است به صورت UTC، timestamp یا متن محلی ذخیره شده باشد. تغییر timezone نمایشی نباید با جابه‌جایی گروهی زمان‌های دیتابیس همراه شود، مگر اینکه تبدیل مشخص و آزموده‌شده لازم باشد.
یک نوشتهٔ زمان‌بندی‌شده یا وظیفهٔ آزمایشی را در محیط جدا امتحان کنید. ساعت اجرای cron با ساعت نمایشی برنامه ممکن است تفاوت داشته باشد. هدف این است که کار در لحظهٔ درست اجرا شود، نه اینکه صرفاً رشتهٔ زمان در یک صفحه مطابق سلیقه نمایش داده شود.

تأیید تغییر

از تنظیم قبلی نسخه بگیرید و تغییر را در مسیر پایدار پنل یا محیط اجرا ثبت کنید. بعد از اعمال، مقدار مؤثر را دوباره از وب و در صورت نیاز از CLI بخوانید. فایل تشخیصی عمومی را پس از بررسی حذف کنید.
ورود، تاریخ لاگ، زمان نوشته و یک وظیفهٔ مرتبط را کنترل کنید. اگر اختلاف باقی ماند، مرحلهٔ ذخیره و تبدیل در خود برنامه را بررسی کنید. دستورهای قدیمی تنظیم ساعت به یک تاریخ ثابت، راه‌حل تنظیم timezone PHP نیستند و نباید برای حل اختلاف نمایش اجرا شوند.

فرمان‌های نمونهٔ این آموزش

فرمان‌های زیر مربوط به مراحل توضیح‌داده‌شده‌اند. پیش از اجرا، نام حساب و مسیر نمونه را با اطلاعات خودتان جایگزین کنید. فرمان‌های مدیریتی را مدیر سرور اجرا می‌کند.
کد / دستورtimedatectl status

منابع و ادامهٔ مطالعه

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام