企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 加密Hyperf Hyperf项目线上运行时,务必开启 `SCAN_CACHEABLE`,这样在项目启动时,只要缓存存在时,就不会实例化 `BetterReflection` 并扫描所有注解。 所以,在我们要加密代码时,务必按照以下步骤进行。不同的`hyperf`版本采取的方式不同。 ## hyperf 版本 2.0、 2.1 1. 开启 `SCAN_CACHEABLE` 2. 执行 `composer dump-autoload -o` 优化索引的同时删除 `runtime/container` 目录 3. 执行 `php bin/hyperf.php` 生成 `runtime/container`,确保生成了`runtime/container/proxy/`目录和相关的`.cache`文件 4. 打包所有代码,复制到另外一个目录中,对这些代码进行加密 在加密时需要注意以下问题: * 设置加密文件黑名单, `vendor`、`test`、`config` 目录不加密,`runtime/container/proxy` 目录必须加密 * 选择保留注释 * 源代码 `runtime/container`中的 `*.cache`文件必须复制到加密代码的`runtime/container`目录下 ## hyperf 版本 2.2以上 参考项目:https://github.com/hyperf/scan-manager-incubator `Hyperf`项目线上运行时,务必开启`SCAN_CACHEABLE`,这样在项目启动时,只要缓存存在时,就不会再次扫描注解。 所以,在我们要加密代码时,务必按照以下步骤进行: 1. 开启`SCAN_CACHEABLE` 2. 执行`composer dump-autoload -o`优化索引的同时删除`runtime/container`目录 3. 执行`php bin/hyperf.php scan:cache`生成`runtime/container` 4. 打包代码后进行加密,需要注意以下问题: 5. 设置加密文件黑名单,不加密vendor、test、config等文件夹 6. 选择保留注释 7. 安装好扩展后即可正常运行代码 ## 注意事项 确保`compiler.ini`文件里面配置的加密代码的输出路径和加密项目运行的路径一致,否则可能会导致注解失效的问题。 例如,`compiler.ini`文件里面配置的是: ```ini compiled_archived_path=/data/wwwroot/code.tar.gz ``` 那么,在部署加密代码的时候,项目也要放到`/data/wwwroot/`下面。 原因解释:`hyperf`会在文件`scan.cache`里面缓存一些文件的**绝对路径**,`hyperf`启动的时候,会根据`scan.cache`文件里面的路径进行一些操作。所以,要保持路径一致。