所以我正在構建一個工具來增加網站的安全性。 該工具在CMS啓動之前加載並將掃描有問題內容的請求(如軟防火牆)使用代碼後卸載作曲家自動加載器
事情是 - 我在Composer上使用了一些庫來構建工具。到現在爲止還挺好。 現在我在想這可能是一個壞主意,因爲如果CMS也調用Composer Autoload,我們在代碼中可能會有不同版本的相同庫(這會產生問題和錯誤)。
那麼在我的腳本完成掃描請求後,有沒有辦法卸載我的作曲家自動加載?
謝謝你的任何幫助:)
所以我正在構建一個工具來增加網站的安全性。 該工具在CMS啓動之前加載並將掃描有問題內容的請求(如軟防火牆)使用代碼後卸載作曲家自動加載器
事情是 - 我在Composer上使用了一些庫來構建工具。到現在爲止還挺好。 現在我在想這可能是一個壞主意,因爲如果CMS也調用Composer Autoload,我們在代碼中可能會有不同版本的相同庫(這會產生問題和錯誤)。
那麼在我的腳本完成掃描請求後,有沒有辦法卸載我的作曲家自動加載?
謝謝你的任何幫助:)
是的,你可以註銷自動加載功能如下:
$functions = spl_autoload_functions();
foreach($functions as $function) {
spl_autoload_unregister($function);
}
來源:http://php.net/manual/en/function.spl-autoload-unregister.php#112225
但是,這不會離開你一個乾淨的石板(這是你想要的):
最好的辦法是把你的代碼集成到上述應用程序中(即合併作曲文件)並在維護應用程序時保持版本同步。
不錯的問題。 當我的代碼中的兩個地方使用不同版本的guzzle時,我遇到了類似的問題。 因此,您無法在運行時取消註冊已註冊的類。 從firerwall的腳步中你不能運行clean
。 因此,無論使用何種產品,您都無法確定您的產品是否兼容且無衝突。 悲傷,但是確實如此。
所以我對這個項目的解決方案是將作曲家合併在一起。對於其他所有我需要編寫我自己的類來使其工作。如果我只使用自己的解決方案,我不應該說與作曲家的問題。這ofc帶有其他問題... – OmegaTCU
我想知道爲什麼你沒有將你的工具集成到CMS中,而是將它作爲一個單獨的工具進行開發? – Xatenev
使用單獨的供應商目錄,以免碰到路徑衝突並使用'$ functions = spl_autoload_functions(); foreach($ function as $ function){ spl_autoload_unregister($ function); }' – Xatenev
@Xatenev我想在未來的其他網站上使用這個工具。所以它必須是CMS不特定的。 – OmegaTCU