PHP 5.3 的 E_STRICT

這老梗了,可是好像很多人不知道:在 PHP 5.3 的開發環境上,error_reporting 的值要開成「E_ALL | E_STRICT」而不是只有 E_ALL。不知為何,這件事情連 PHP: The Good Parts 之類的書都沒寫。

原因是因為 E_STRICT 是比 E_ALL 更高層次的錯誤檢查,會把一些 coding standard 的東西也挖出來警告。而為何 E_ALL 不是字面上的 ALL 這我也不知道…所以根據 Debian package 帶的 php.ini,不同的環境應該要這樣設定:

  • 開發環境 (development):E_ALL | E_STRICT
  • 正式環境 (production):E_ALL & ~E_DEPRECATED

當然,正式環境的 display_errors 應該要關掉。如果不希望產生任何錯誤 log 也是可以設定成 error_reporting = 0,不過程式炸掉的話就死無對證了。

每個值的定義可以看這篇文件

One thought on “PHP 5.3 的 E_STRICT

  1. E_ALL不包含E_STRICT的原因或許是向後相容性?E_STRICT 是 PHP5 才出來的東西。

    另外有印象看到E_STRICT在PHP6中會被包含在E_ALL裏面,一下找不到確定的資料就是。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.