记一次SourceGuardian加密的PHP扩展安装过程

一、问题描述

 从网上下载了一套PHP聊天室源码,部署在Winserver中的Apache服务器,运行报错如下:

 

打开文件 common.inc.php,发现一串不知所云的代码:

 

报错信息说的是 sg_load 函数没有找到,查找一番资料后,发现 sg_load 是 SourceGuardian 扩展提供的全局函数,运行环境需要这个扩展才能执行这段代码。SourceGuardian 提供 php 源码文件的加密,而运行这些加密 php 文件则需要安装扩展:SourceGuardian loader。

二、SourceGuardian loader 安装过程

浏览器中打开 https://www.sourceguardian.com/loaders/download.php,输入服务器上打印了 phpinfo 信息的 php 文件地址:

 

在线的检查脚本会根据 phpinfo 的信息,提取到 php 版本信息和扩展路径,然后提示你需要的操作。例如它提示我 extension_dir 应设置为绝对路径而非相对路径:

 

那就改呗,在 php.ini 中找到 extension_dir,将原来的相对路径 ./ext 改为绝对路径。重启 Apache 然后重新执行检测:

 

 

到这一步它提示我需要:

  1. 下载 ixed.5.4.win
  2. 安装到 php 扩展的 ext 目录
  3. 在 php.ini 中加载它:extension=ixed.5.4.win
  4. 重启 Apache

全部修改完成后,在 phpinfo 看到了 SourceGuardian 的相关信息,说明扩展已经生效了:

 

满怀期待的再次访问网站。依旧报错,不过这一次不是找不到 sg_load 函数了,而是该扩展不支持 php5.4.45 版本 -_-||

没办法,只好切换 php 版本到5.6,然后重新执行上述步骤,再次访问就一切OK~~

参考:

最后附一个补充文章,如何写一个PHP扩展:https://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend

posted @ 2018-08-01 14:36 Azure沫 阅读(...) 评论(...) 编辑 收藏