閱讀49 返回首頁    go 技術社區[雲棲]


magento -- 修改文件來手動控製編譯的開啟和關閉

之前遇到一個情況,在編譯開啟的狀態下安裝了一個新插件,結果前後台都不能訪問了,這時想去找找是哪裏在控製編譯的開啟和關閉,先把編譯關了來保證係統不報錯。按照一般的習慣後台數據或配置都是存在於數據庫,但找遍數據庫也沒發現跟編譯有關的數據。因為編譯的結果是在/includes/src目錄下生產很多文件,去includes文件夾時發現了config.php文件,從命名就可以看出這是一個做配置的文件,經過拿一個本地測試項目做實驗,證實了編譯的開啟與否並不是存在數據庫,而是在修改config.php的內容。這個文件的默認內容為

#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat'); 

兩句都是注釋的狀態,在後台開啟編譯後,第一句會啟用,不再注釋,

define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat'); 

當然,後台關閉後第一句又會回到注釋狀態,表示當前編譯不啟用。

 

回到一開始的問題,現在後台不能訪問,也就是不能通過後台來關閉編譯,這時我們手動修改config.php文件,將第一句注釋,然後刷新頁麵,會發現已經不再報錯,後台也可以進入,進入後可以看到當前確實是編譯關閉狀態,重寫啟動編譯後,將插件的文件也一起編譯,係統不再報錯了。

PS:其實不考慮編譯到底怎麼在運行,還有另一種簡單的方法可以處理這個問題,進入/app/etc/modules文件夾,找到新安裝插件所對應的xml文件,把狀態由true改成false,不啟用這個插件,前後台都可以訪問了,然後重寫啟動編譯,將文件編譯完之後再進xml文件改回true啟用插件,問題解決。

再PS:如果在使用編譯這個功能,安裝新插件時記得先禁用編譯,以避免不必要的麻煩。

 

最後更新:2017-04-02 06:51:24

  上一篇:go Findstr 命令
  下一篇:go JavaScript頁麵打印(隻打印指定部分)