php專案中的配置檔案,在PHP中建立配置檔案

2021-10-25 21:34:39 字數 1575 閱讀 7626

我對這裡接受的答案以及它所獲得的贊成數量感到驚訝。 除了marcio mazzucato的答案之外,沒有討論任何多種方法的相對優點/缺點。

我看到的選項是:

基於檔案的機制

這些要求您的**在特定位置查詢以查詢ini檔案。 這是乙個難以解決的問題,並且總是在大型php應用程式**現。 但是,您可能需要解決問題才能找到在執行時合併/重用的php**。

常見的方法是始終使用相對目錄,或者從當前目錄向上搜尋以查詢在應用程式的基本目錄中專門命名的檔案。

用於配置檔案的常見檔案格式是php**,ini格式化檔案,json,xml,yaml和序列化php

php**

這為表示不同的資料結構提供了大量的靈活性,並且(假設它是通過include或require處理的),解析的**將從操作碼快取中獲得 - 從而提供效能優勢。

include_path提供了一種抽象檔案的潛在位置的方法,而不依賴於其他**。

另一方面,將配置與**分離的主要原因之一是分離職責。 它提供了將其他**注入執行時的路由。

如果配置是從工具建立的,則可以驗證工具中的資料,但是沒有標準函式來轉義嵌入到php**中的資料,如html,url,mysql語句,shell命令所存在的......。

序列化資料這對於少量配置(最多約200項)相對有效,並允許使用任何php資料結構。 它只需要很少的**來建立/解析資料檔案(因此您可以花費大量精力確保檔案僅使用適當的授權進行編寫)。

將自動處理寫入檔案的內容的轉義。

由於您可以序列化物件,因此只需通過讀取配置檔案(__wakeup魔術方法)就可以建立呼叫**的機會。

結構化檔案

根據marcel或json或xml的建議將其儲存為ini檔案還提供了乙個簡單的api,用於將檔案對映到php資料結構(除了xml,以逃避資料和建立檔案),同時消除**呼叫 使用序列化php資料的漏洞。

它將具有與序列化資料類似的效能特徵。

資料庫儲存

這是最好的考慮你有大量的配置,但有選擇性的當前任務所需 - 我很驚訝地發現,在大約150個資料項,從本地mysql例項檢索資料比從 反序列化資料檔案。

otoh它不是儲存用於連線資料庫的憑據的好地方!

執行環境

您可以在php執行的執行環境中設定值。

這消除了php**在配置的特定位置查詢的任何要求。 otoh它不能很好地擴充套件到大量資料,並且很難在執行時普遍改變。

在客戶端

我沒有提到用於儲存配置資料的乙個地方是客戶端。 網路開銷再次意味著這不能很好地擴充套件到大量配置。 並且由於終端使用者可以控制資料,因此它必須以可檢測到任何篡改的格式(即,使用加密簽名)儲存,並且不應包含任何被其公開所損害的資訊(即,可逆地加密)。

相反,這對於儲存終端使用者擁有的敏感資訊有很多好處 - 如果您不將其儲存在伺服器上,則不能從那裡竊取。

網路目錄另乙個儲存配置資訊的有趣位置是dns / ldap。 這將適用於少量小資訊 - 但您不需要堅持第一正規化 - 考慮,例如spf。

基礎結構支援快取,複製和分發。 因此,它適用於非常大的基礎設施。

版本控制系統

配置與**一樣應該進行管理和版本控制 - 因此直接從vc系統獲取配置是乙個可行的解決方案。 但通常這會帶來顯著的效能開銷,因此快取可能是可取的。

PHP 配置檔案

可能並不準確,具體還是要看官方的解釋 php 關閉或開啟錯誤報告 display errors off 設定錯誤報告的級別 e all 所有錯誤和警告 e error 致命的執行時錯誤 e recoverable error 幾乎致命的執行時錯誤 e warning 執行時警告,不致命的錯誤 e p...

Php讀配置檔案

馬永佔,myz,mayongzhan php讀配置檔案 馬永佔,myz,mayongzhan 要讀的格式 php.ini this is demo by 馬永佔 myz global i 1j 2 k 3 self a 11 b 22 c 33 讀的方法 name test4.php date mo...

SUG UAP專案中配置檔案解析

等檔案,這些天做專案也沒少更改這些檔案下面就簡單的介紹一下,算對自己工作的乙個總結。datasource.xml 眾所周知的資料庫配置檔案,在這個平台下也是這樣 中的位址是本地的資料庫位址 使用者名稱和密碼。在公司工作的時候使用的資料庫在伺服器上,回家後加班工作需要使用資料庫只好把資料庫搞到本地乙份...