常见问题

我们的优势

  • 1.强大的性能,市面上的同类产品加密后都会对代码运行效率有很大损耗,swoole compiler不仅没损耗而且会有性能提升。
  • 2.4重加密,通过4重加密完全杜绝了被破解还原php代码的可能,即使被逆向工程得到的也是失去原来语义的php代码。
  • 3.本地化支持,对比市面上商业类的加密软件,是唯一一个国人研发的加密软件,能够提供完美的售后支持。
  • 4.支持完善,支持windows/linux ,支持php5.4,php5.5,php5.6,php7.0,php7.1,php7.2基本上覆盖了所有主流在用的php版本,同时支持线程安全。
  • 5.语法检查,再加密php代码的时候会检查每个php文件是否有语法错误,并提示给用户,防止错误的代码上线。
  • 6.性价比高,对比同类产品,我们的价格是最低的,并且提供免费的版本升级,售后服务,100人以下企业按照官网的优惠价格销售,100人以上企业需要商务沟通。
  • 7.支持免安装在线加密。
  • 8.功能强大,支持限制客户端(运行加密代码的机器)mac地址限制,ip地址限制,hostname限制,过期时间等高级功能。

常见报错:

1.报错:"load file /www/wwwroot/xxx.php failed error: Success [0]"

- 解决办法:确认xxx.php的文件权限是否正确。

2.报错:"the code encrypt by php 7.1 , but the loader version is 5.6"

- 解决办法:加密时候的版本号要和解密端(运行加密的php代码的机器)的php版本号对应上。

3.安装loader扩展后 运行一个非常简单逻辑的加了密的php代码 报"segment fault"或"Allowed memory size of xxxx"错误

- 确保你的php没有安装incube loader、xdebug、zend guard loader扩展。
- 确保swoole_loader的版本和加密器的版本对应上,例如1.9版本的加密器对应1.9版本的loader。

4.报错:"PHP Fatal error: Unknown: product xxxxxxx can not find in license file in Unknown on line 0 Fatal error: Unknown: product xxxxxxx can not find in license file in Unknown on line 0"

- 解决办法:添加授权信息后加密的代码包里面会包含一个license授权文件
- loader端需要在php.ini中添加以下配置:
- swoole_license_files=/yourpath/swoole-compiler.license

yourpath为存放license授权文件的路径

5.访问提示:"Loader ext not installed"

- 解决办法:
- 1.确认你的swoole-loader扩展是否安装成功
- 2.确认你的PHP版本、加密器版本以及swoole_loader的版本是否一致

loader扩展兼容性

  • 因为swoole_loader无法和xdebug和ioncube,zend guard loader扩展兼容,使用前需要先卸载.
  • 在alpine系统中swoole loader无法和opcache扩展兼容,所以在alpine系统中使用前请卸载opcache扩展

使用 Swoole Compiler 是否会降低性能

Swoole Compiler 不存在运行时解密还原 PHP源代码的逻辑,二进制目标文件只有经过处理的opcode二进制指令和内存数据,在第一次运行时将指令和数据载入内存,处理请求时没有任何性能消耗。

是否有绑定客户端机器Mac地址或域名功能

试用版本不支持此功能。正式版已经支持。

Swoole Loader 与 Opcache

Swoole Compiler 软件本身就是将PHP代码编译为经过特殊处理的opcode,所以使用Swoole Loader加载程序时,不需要其他OpCache扩展,包括opcacheapcZendGuardLoadereAccelerator等扩展。

如果你的应用程序中,同时有加密代码和非加密代码。当swoole_loader发现是非加密代码时,会将编译控制权转给opcache,由opcache实现代码的加载。

加密器与ThinkPHP

tp会将一些php文件合并到一个runtime.php里面,这样如果其中一些加密了一些没加密,那么合并后的文件就无法正常运行。有3个解决方案

  • 1修改Library/Think/Think.class.php注释掉生成runtime的地方。

  • 2修改配置开启debug模式。

  • 3整个项目不加密运行一下让框架生成runtime.php,然后加密的时候把这个runtime.php也一起加密

加密器与Composer

现代的php项目大部分都用composer做依赖管理,需要注意的是如果你的项目加密后执行composer install有可能出现问题,因为composer会分析你的项目所有的类并生成autoload_classmap.php。如果加密的代码composer是无法分析的,会导致无法加载类。 解决方案:先composer install 拉下来vender目录 再进行加密,加密的时候可以通过白名单来排除 vendor目录,或者连着vendor一起加密也可以(vendor非常大的话会比较慢)

关于文件软链接:

不要在项目中有软链接,否则在线加密会丢失文件,本地加密也会丢失软链(直接把软链接的文件当做了真实的文件).

关于symfony:

symfony框架的路由方式如果通过注释的方式是无法正确解析的,因为symfony框架通过分析源码获得文件的命名空间,类名等信息,这些信息加密后都无法获得。

  解决方案:通过yaml配置文件的方式来路由。

  • FqFisher

    请教个问题,我的php版本是5.6.30的,引入了Zend Guard Loader模块,同时也引入swoole_loader模块后,加密后的代码无法运行,有没有好的办法解决该问题呢?

  • 郭新华

    @FqFisher 卸载掉zend的模块

  • 烈火☆寒冰

    混淆后报错了,大部分类没有问题。

    yii\base\ErrorException: Cannot declare class common\models\Test, because the name is already in use in /var/www/html/common/models/Test.php:-2147483592 Stack trace: #0 [internal function]: yii\base\ErrorHandler->handleFatalError() #1 {main}

  • 王锋

    Fatal error: Unknown: the license config file format error , use ini format and do not modify it in Unknown on line 0 报这个错误,是什么原因呢?我有按照说明在php.ini里面写上license的路径