錯誤日志對于發現程序中的錯誤是非常有幫助的,但是有些時候它也會將應用程序的結構暴露給外部。為了有效的保護你的應用程序不受到由此而引發的問題。你需要將在你的服務器上使用開發和生產(線上)兩套不同的配置。
### 開發環境
為了在開發環境中顯示所有可能的錯誤,將你的 `php.ini` 進行如下配置:
~~~
display_errors = On
display_startup_errors = On
error_reporting = -1
log_errors = On
~~~
> 將值設為 -1 將會顯示出所有的錯誤,甚至包括在未來的 PHP 版本中新增加的類型和參數。 和 PHP 5.4 起開始使用的 E_ALL 是相同的。- [php.net](http://php.net/function.error-reporting)
`E_STRICT `類型的錯誤是在 **5.3.0** 中被引入的,并沒有被包含在 `E_ALL `中。然而從 **5.4.0** 開始,它被包含在了 `E_ALL `中。這意味著什么?這表示如果你想要在 5.3 中顯示所有的錯誤信息,你需要使用 -1 或者 `E_ALL | E_STRICT`。
**不同 PHP 版本下開啟全部錯誤顯示**
* < 5.3 -1 或 E_ALL
* 5.3 -1 或 E_ALL | E_STRICT
* > 5.3 -1 或 E_ALL
### 生產環境
為了在生產環境中隱藏錯誤顯示,將你的 `php.ini` 進行如下配置:
~~~
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
~~~
當在生產環境中使用這個配置時,錯誤信息依舊會被照常存儲在 web 服務器的錯誤日志中,唯一不同的是將不再顯示給用戶。更多關于設置的信息,請參考 PHP 手冊:
* [錯誤報告](http://php.net/errorfunc.configuration#ini.error-reporting)
* [顯示錯誤](http://php.net/errorfunc.configuration#ini.display-errors)
* [顯示啟動錯誤](http://php.net/errorfunc.configuration#ini.display-startup-errors)
* [記錄錯誤](http://php.net/errorfunc.configuration#ini.log-errors)
- 歡迎
- 入門指南
- 使用當前穩定版本
- 內置的WEB服務器
- Mac安裝
- Windows安裝
- 代碼風格指南
- 語言亮點
- 編程范式
- 命名空間
- PHP標準庫
- 命令行接口
- Xdebug
- 依賴管理
- Composer 與 Packagist
- PEAR
- 開發實踐
- 基礎知識
- 日期和時間
- 設計模式
- 使用UTF8編碼
- 依賴注入
- 基本概念
- 復雜的問題
- 容器
- 延伸閱讀
- 數據庫
- MYSQL 擴展
- PDO 擴展
- 數據庫交互
- 數據庫抽象層
- 使用模板
- 好處
- 原生PHP模板
- 編譯模板
- 延伸閱讀
- 錯誤與異常
- 錯誤
- 異常
- 安全
- Web應用程序安全
- 密碼哈希
- 數據過濾
- 配置文件
- 注冊全局變量
- 錯誤報告
- 測試
- 測試驅動開發
- 行為驅動開發
- 其他測試工具
- 服務器與部署
- Platform as a Service (PaaS)
- 虛擬或專用服務器
- 共享服務器
- 構建及部署應用
- 虛擬化
- Vagrant
- Docker
- 緩存
- Opcode緩存
- 對象緩存
- 文檔撰寫
- 資源
- 社區
- Credits