前言
如果你是用 PHP 作為你的程式語言,不管你是用在網頁或是其他地方,你可能偶爾會遇到這樣的問題:當程式上了主機,在時間上可能跟你在自己的電腦上跑出來的結果不同。這是因為你無法保證主機商上的時間跟你的電腦是使用同一個時區,尤其是買其他國家的主機更為明顯。
因此我推薦的作法,就是當你有固定某種時區的需求時,就預先在系統或是程式內定義好想使用的時區,而這篇文章就是記下如何定義。
更改 php.ini
若你的權限足夠,你可以直接選擇編輯主機上的 php.ini
,這可以使你不需要在程式碼內定義一次。
舉例來說,我常使用 Nginx 搭配 php-fpm 來使用 PHP。通常 php.ini
會位於 /etc/php/8.2/fpm/
裡面,而路徑中的 8.2
則是我使用的 PHP 版本。
sudo vim /etc/php/8.2/fpm/php.ini
找到 [Date]
之後,你應該會看到 date.timezone =
未被定義,我們需要取消註解他,並給他一個時區,以下以台北為例。
[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
date.timezone = "Asia/Taipei"
完成之後,我們要重啟這個 php-fpm
,如果版本是 8.2
就這樣下:
sudo systemctl restart php8.2-fpm
程式碼定義
但如果說你的權限不夠,那我們就只能選擇在 PHP 的程式碼來定義。在程式碼的開頭新增以下內容,以下以台北時間作為範例:
<?php
date_default_timezone_set("Asia/Taipei");
?>
這樣就可以在不改變主機設定的情況下,使 PHP 照著你想要的時區運作囉。