1Panel 面板添加 PHP SourceGuardian (sg15) 扩展详细教程
最近在网上冲浪时,发现了一款名为 序智应用商店系统 的 PHP 应用程序,由于其官方在线演示网址无法正常访问,故决定自己部署体验效果。
程序基本情况介绍:
项目 | 介绍 |
---|---|
名称 | 序智应用商店系统 |
源码版本 | 3.0.3 |
PHP 版本 | PHP 8.1 + (推荐 8.2,8.4 可能白屏) |
数据库 | Mysql 5.7 + |
运行目录 | /public |
实际安装配置可参考 ThinkPHP
首先考虑在 Windows 本地进行部署,这里使用 解压即用的 PHP 集成环境 phpEnv。添加网站并复制源码到对应文件夹即可,打开浏览器,即可看到环境检查页面。
我设置的网站根目录为:P:\phpEnv\www\canscodestore\
由于本源码部分代码进行了加密处理,需要安装 PHP SourceGuardian (sg15) 扩展才可以正常使用。当前该扩展的聚新版本是 16,而源代码强制检测 15,实际上这个扩展是向下兼容的,安装最新版即当前的 sg16 即可,这里需要修改相关代码跳过 SourceGuardian 版本检测:
- 打开文件
P:\phpEnv\www\canscodestore\public\i.php
- 找到并修改关键代码:
if (extension_loaded('sourceguardian')) {
// 获取 SourceGuardian Loader 的版本
$version = phpversion('sourceguardian');
// 检查版本是否为 15.x
if (preg_match('/^15\./', $version)) {
$sgok = true;
} else {
// $sgok = false;
$sgok = true; // 修改为 true
}
} else {
$sgok = false;
}
由于 phpEnv 从 PHP 8.0 开始,不额外自带任何扩展。我们需要自行下载安装并配置其他扩展,常见 DLL 扩展可前往 pecl.php.net 下载。
但我们需要的 SourceGuardian 扩展需要前往 SourceGuardian Loaders 官网下载,仅提供最新版本下载。
也可以直接点击检查页面的 “下一步” 按照页面错误提示直接下载对应系统及 PHP 版本的扩展文件。由于我使用的 PHP 8.2,且为 Windows 系统,所以需要的是 ixed.8.2.win
- 复制
ixed.8.2.win
文件到P:\phpEnv\php\php-8.2\ext\ixed.8.2.win
- 记事本打开
P:\phpEnv\php\php-8.2\php.ini
配置文件 - 搜索并找到最后一个
extension=
(大约在 950 行) - 新起一行,添加
extension=ixed.8.2.win
,保存 - 重启运行环境
这样这个扩展就安装好了,其他的扩展也可以按照这个方式安装。这个时候页面就不会提示需要 sg 扩展了。
按照页面提示填写数据库信息,这个时候发现抛出了一个 127.0.0.1
连接错误,经过简单的调查发现安装时填写信息的页面实际是引用该应用程序官方服务器,F12 调出浏览器控制台就会自动关闭当前标签页。由于官方服务器无法访问本地内网,导致无法继续完成安装。
(咱也不知道为什么要这么设计,会不会有管理员密码泄露风险)
本地部署不行,那就直接转移阵地在线上进行部署好了。这里使用的是 1Panel 面板,相对于宝塔来说其更加透明开放。
直接新建网站,遇到了和本地部署同样的问题:缺失 PHP SourceGuardian 扩展,1Panel 并没有像宝塔那样提供了一键添加扩展的设置,首先在网上寻找教程,但是只找到了零星几个,这里相对来说比较可靠的是来自于官方的通用 PHP 自定义扩展添加教程
- 打开应用商店-已安装页面 找到 网站关联的 PHP 应用
- 点击已运行旁边的文件夹图标进入 PHP 安装目录
- 进入 PHP 扩展目录:
/opt/1panel/apps/php8/canscodestore/extensions
- 上传自定义扩展,如:
swoole_loader.so
- 进入网站设置,修改 PHP 配置文件,添加
extension=/php/extensions/swoole_loader.so
- 点击保存并重载,查看是否生效
经过测试,实际仍然未安装,也没有其他错误提示。
经过不懈努力,最终还是让我找到了一劳永逸的方法,那就是重建运行环境:
- 依次点击 网站-运行环境-PHP-创建运行环境
- 参考下表填写运行环境配置:
项目 | 内容 |
---|---|
名称 | PHP-82-SG |
来源 | 应用商店 |
应用 | (1panel-php:8.2.28) |
PHP 扩展源 | 中国科学技术大学 [mirrors.ustc.edu.cn] |
扩展 | ...、sg15 |
重建 PHP 应用 | 勾选 |
- 等待重建完成
- 进入网站设置-PHP-版本,修改版本为刚刚重建的
PHP-82-SG15(版本:8.2.280镜像:1panel-php:8.2.28)
- 取消勾选
保留PHP配置文件
- 保存并立即重启
现在不出意外的话 SourceGuardian 扩展已经被正确安装了,尽管添加扩展时选择的 sg15
,实际安装的还是最新版本 sg16
,不会对使用有啥影响的。大不了就像上面那样改一下版本验证逻辑。
附 默认 扩展模板:
apcu,bcmath,bc,bz2,curl,dom,exif,ftp,gd,gettext,igbinary,imagick,intl,image,iconv,imap,mysqli,memcached,mbstring,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,redis,shmop,soap,sockets,sysvsem,tokenizer,xmlrpc,xml,yaf,zip
彩蛋
这篇文章就到这儿了,希望能帮到你。
