所以我正在构建一个工具来增加网站的安全性。 该工具在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