網友 giorno 問了一個這樣的問題:
在執行 testSmartyInstall.php 時,出現了以下的訊息:

這是因為 PHP 在 5.1 以後有個時區的設定 (date.timezone) ,會預設為美國時區。所以當我們的程式在執行時,就會出現上面的錯誤。
正確的解決方式是在 PHP.INI 中指定正確的時區 (參考) ,如下:
1
| |
也可以在 ch03 目錄下放置一個 .htaccess ,內容如下:
1
| |
或是在建立 Smarty 物件前,直接用 date_default_timezone_set() 在程式直接指定時區:
1
| |
然後 giorno 又發現一個問題,雖然我不太瞭解他的意思,不過為什麼在他回復程式後,第二次又可以執行這點我倒是可以解釋一下。
這是因為第一次正常執行後, Smarty 就會在 templates_c 裡建立一個供 testSmartyInstall.php 用的暫存檔,所以第二次執行時,只要 testSmartyInstall.tpl.htm 沒有任何更動,那麼 Smarty 就會使用該暫存檔來執行。
註:相關的運作流程可以查看拙作的第 2-3 頁。
這應該是 Smarty 在 PHP 5.1 上的相容性問題,只要設定好相關配置之後,應該就不會再發生了。