簡體   English   中英

如何為PHP中的多客戶共享代碼遷移到utf8

[英]how to migrate to utf8 for a multi-customer shared codeBase in PHP

在我們公司中,我們使用專有的CMS,該CMS已用於近一千個網站,並且其使用期限大約為15年。 (它已經進化,但是功能非常豐富)

到目前為止,一直使用iso-8859-1作為字符集,但是有必要在一個項目中使用utf-8。

我的問題是:

  1. 您是否認為這種方法好(維護一個SVN版本,自動轉換為utf8即可搜索/替換有問題的php函數,並在那里做一些魔術)。
  2. 您以前做過這種進化,對您來說有什么麻煩呢?

TLDR信息:

  • CMS的核心是集中(SVN)和部署(rsynch)在我們每台服務器上的特定路徑上,該路徑在每個網站的包含路徑中。
  • 每個項目的數據庫不同(但核心表的結構相同)。
  • 每個網站都使用document_root來保存網站的特定文件(媒體,js,特定的PHP代碼)

在這種配置下,我們無法一次遷移每個網站(即::因為存在本地代碼)。 因此,我想制作兩個內核版本:一個在iso-8859-1中,另一個在utf8中。 從現在開始,我認為我將在部署系統上開發一個腳本,該腳本將在rsynching之前創建一個對我們核心進行編碼的utf8副本。

例如,我擔心的是PHP中所有“ mb_ ”內容都不會被調用,因此我將不得不搜索/替換每個php本機功能,以將其替換為將使用“ mb_ ”版本的自定義腳本。不必要的(此外,這些功能的覆蓋必須在php.ini文件中,無法在特定網站的.htaccess中定義它( ))

PS:對不起,我的英語不好,那不是我的母語:(

所以這是我的處理方式:

  • 每個服務器都是iso-8859-1或utf-8,並具有專用的conf(即:mbstring.func_overload)
  • 在每次部署之前,腳本會創建iso版本的副本並將其轉換為utf8
  • 每個服務器獲取utf-8或iso-8859-1源代碼

對於每個單獨的CMS,都有一個轉換工具,可以轉換文件系統,數據庫字符集/排序規則,配置(即:使用utf8連接到mysql),...。

對於不兼容的功能(例如utf8_encode),我將其搜索/替換為負責的功能(如果服務器為utf8,則該功能不調用該功能)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM