如果您需要在应用程序中对PHP代码进行加密,那么ionCube是一个非常受欢迎的选择,该软件旨在与小型和企业级应用程序很好地集成。
通常,在分发应用程序之前,首先将PHP源代码传递给ionCube编码器。这样可以防止代码被人类阅读或编辑。
但是,默认情况下,加密的PHP源代码无法直接在服务器上执行。需要对其解密,然后PHP引擎才能对其进行处理。
只需移至Kinsta,即可将WordPress网站的速度提高200%。
今天免费迁移
这是ionCube装入程序的来源。
介绍
它是2002年首次发布的一个PHP扩展,可以即时解密(以前加密的)代码,并准备将其与其他PHP应用程序一起执行。
一切都与安全有关。如果PHP应用程序包含专有代码/算法,或者需要软件许可功能,则使用ionCube是保护源代码的理想解决方案。
要编码PHP文件,您首先需要购买ionCube编码器。还有一个在线版本的编码器,其中包括免费支持对PHP代码进行加密以用于测试的目的(请参见下文)。
至于ionCube加载器,任何人都可以免费下载并安装在其服务器上。 ionCube加载程序有多种不同的版本,每种版本都针对特定的系统(Linux,Windows,macOS等)以及32位或64位体系结构而设计。
下载完成后,您需要安装与服务器上运行的PHP版本相匹配的ionCube loader版本,因为每个可用下载都包含针对所有不同PHP版本的多个ionCube loader版本。
如果您不确定需要下载和安装哪个版本,请不用担心,我们将在短期内详细介绍。
顺便提一下,如果您使用HHVM(HipHop虚拟机)来处理PHP,则需要注意ionCube loader不支持HHVM。
但是,由于HHVM从版本v3.30开始不再支持PHP,因此这主要是一个争论点。因此,这仅在使用较旧版本的HHVM时才有意义。如果您仍在使用HHVM,并且需要使用ionCube加密PHP文件,则必须切换到支持ionCube的更标准的PHP引擎。
准备安装
为了完成ionCube loader的手动安装,最好先熟悉常用的终端命令。如果您已经熟悉终端,请随时跳到下一部分。
在本指南中,我们引用以下终端命令:
-
cat –将文件内容输出到终端。
-
cd –更改当前工作目录。
-
cp –复制一个或多个文件。
-
echo –将消息输出到终端。
-
grep –强大的基于文本的搜索。
-
head –输出文件的前几行。
-
ls –列出文件和目录。
-
mkdir –创建一个新目录。
-
nano –终端窗口内的紧凑型文本编辑器。
-
ssh –创建一个新的远程SSH连接。
-
tar –从存档中提取文件。
-
wget –通过HTTP下载文件。
了解这些终端命令的功能以及如何使用它们将使ionCube loader的安装过程更加容易。单击链接以获取有关每个命令的更多详细信息。
为Kinsta客户自动安装
如果您是Kinsta客户,支持人员可以应要求为您安装ionCube loader。默认情况下,它没有安装在您的帐户中,但是如果您打开支持票证,则支持团队的人员将很乐意为您安装该票证。 ionCube对Kinsta客户免费,并且可以按任何计划安装。
Kinsta当前支持在以下PHP版本上运行ionCube loader扩展:
- 7.2
- 7.3
如果您不是Kinsta客户,我们将指导您如何在VPS上手动安装ionCube loader。确保您具有完全的SSH访问权限,并且可以舒适地执行终端命令。
手动安装ionCube装载机
要在服务器上手动完成ionCube loader的安装,需要执行一组特定的步骤。该过程可能会有所不同,具体取决于您的确切服务器设置,但是只要您运行的是基于Linux的服务器,那么差异就应该很小。
在安装过程中,我们将详细介绍以下每个步骤:
-
通过SSH远程连接到您的站点。
-
下载并解压缩ionCube Loader PHP扩展。
-
复制ionCube Loader .SO文件。
-
配置和服务器重启。
- 验证ionCube Loader安装
- 测试ionCube安装
- 检查错误日志中的安装问题
通过SSH远程连接到您的站点
在我们可以下载并开始安装ionCube loader之前,我们需要通过SSH(安全外壳)建立与服务器的安全远程连接。这已成为通过命令行与服务器交互的标准方法,我们将在ionCube loader PHP扩展的安装过程中进行广泛介绍。
要打开新的SSH连接,您需要准备以下信息,每次登录时都必须输入以下信息:
- 主机名
- 端口号
- 用户名
- 密码
最好查找这些信息并提前记录下来。通常,此信息可以在服务器cPanel或MyKinsta之类的仪表板中找到。如果您找不到所需的信息,房东将可以提供帮助。
您还可以使用SSH密钥连接到远程服务器。通常认为此方法是通过SSH连接的更安全的方法。您的服务器应同时支持这两种方法。
如果您想使用SSH密钥而不是每次登录时都输入用户名/密码组合,请查看此综合指南以获取更多信息。
如果您使用的是macOS或Linux操作系统,则内置终端可用于SSH访问。但是,如果您使用的是Windows,则需要使用SSH客户端(例如PuTTY),因为默认情况下此功能不可用。
在本指南的其余部分中,我们将使用macOS终端。要通过SSH连接到服务器,您需要以下详细信息:
- 用户名
- 主机名
- 端口号
- 密码(SFTP)
SSH terminal命令的格式为:
ssh username @ hostname -p端口号
端口号通常为22,但对于您的特定服务器可能有所不同。例如共享服务器和专用服务器可能使用不同的端口号,因此如果不确定连接前请咨询主机提供商。
输入ssh命令后,系统将提示您输入密码,完成远程SSH连接后,您将可以直接访问服务器。
下载并解压缩ionCube Loader PHP扩展
ionCube加载程序有不同版本可供下载。这些信息按平台和发布日期列出,以便更轻松地选择与您的特定系统相关的正确版本。
您可以选择订阅ionCube加载程序更新,以确保使用最新版本使加载程序扩展保持最新。
要找出哪个加载程序版本适合您的服务器,我们可以使用PHP命令显示详细的PHP配置数据。
(phpinfo())(https://www.php.net/manual/zh/function.phpinfo.php)
要使用此PHP函数输出所需的数据,请完成以下步骤:
- 通过SSH连接到服务器。
- 创建一个PHP文件。
- 添加phpinfo()函数。
- 将文件保存在根网站文件夹中
- 在浏览器中显示。
- 在文档中搜索ionCube参考。
- 完成后删除文件。
仅显示服务器PHP配置数据需要进行大量工作。幸运的是,有一种通过终端执行此操作的更简单方法。
使用WordPress,我们的流量增长了1,187%。
我们将向您展示如何。
加入20,000多个其他人,他们每周都会收到有关WordPress内部技巧的新闻!
现在订阅
成功!感谢您的订阅
您将在一周内收到下一期的Kinsta新闻通讯。
订阅Kinsta新闻通讯
订阅
我同意条款和条件以及隐私政策
运行php -i命令将从PHP CLI引擎获得与phpinfo()相同的响应。但是,我们只希望输出前几行,因为其中包含有关PHP正在运行的服务器环境的相关信息。
这可以通过以下方式完成:
php -i |头-n 5
它将输出以下信息:
如您所见,我们的特定服务器是基于Linux的,而x86_64是指64位系统。因此,我们应该下载的ionCube加载程序是Linux 64位tar.gz存档。确保下载与系统相关的ionCube loader档案。
ionCube loader归档文件应下载到一个临时文件夹,因此让我们现在创建一个文件夹,然后再执行其他操作:
cd / tmp
mkdir ioncube
cd ioncube /
要实际下载ionCube归档文件,请使用wget命令。
get
https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
这会将ionCube加载程序软件包下载到临时文件夹中,并输出下载进度,直到完成。
成功下载存档后,使用以下命令将其解压缩到相同的/ tmp文件夹中:
焦油xvfz ioncube_loaders_lin_x86-64.tar.gz
这会将所有存档文件提取到新的ioncube文件夹中。用ls ioncube列出它们:
如您所见,有多个扩展名为.so的单独ionCube加载程序文件。每个文件名包含一个不同的数字,该数字表示服务器上运行的PHP版本,因此,请务必安装正确的文件名。
之前,我们运行了命令php -i | head -n 5获取服务器操作系统信息。输出的前两行还为我们提供了PHP版本,本例中为7.2.22。
为了快速确定我们应该使用哪个ionCube加载器文件,请仅列出包含_7的文件,以便更轻松地仅查看感兴趣的文件。
我们可以通过将ls的输出通过管道传递到grep来过滤文件列表来做到这一点:
ls ioncube | grep _7
结果是:
与我们的PHP版本最接近的匹配是ioncube_loader_lin_7.2.so。还有另一个匹配的文件,名为ioncube_loader_lin_7.2_ts.so,但是我们可以忽略此文件,因为它是与我们的特定服务器设置无关的线程安全版本。
顺便说一句,如果您想知道,.so文件是一种库文件,代表“共享对象”。这些有点类似于Windows用户可能熟悉的DLL(动态链接库)文件。
复制ionCube Loader .SO文件
要完成ionCube loader的安装,我们只需要将ioncube_loader_lin_7.2.so文件复制到PHP扩展文件夹中。
要查找扩展文件夹的位置,请输入以下终端命令:
php -i | grep extension_dir
返回包含所需信息的字符串。
extension_dir => / opt / cpanel / ea-php72 / root / usr / lib64 / php / modules => / opt / cpanel / ea-php72 / root / usr / lib64 / php / modules
不要忘记,这对于您自己的服务器可能是唯一的。现在我们知道了目标文件夹,我们可以复制ionCube加载程序文件。
须藤cp /tmp/ioncube/ioncube/ioncube_loader_lin_7.2.so / opt / cpanel / ea-php72 / root / usr / lib64 / php / modules
现在,ionCube加载程序位于正确的位置,但是我们需要让PHP知道该扩展程序可用以及安装位置。
我们可以通过编辑主php.ini配置文件并添加一个新的zend_extension条目(指定ioncube_loader_lin_7.2.so的路径)来做到这一点。
但是,php.ini很难通过终端进行编辑,但是我们可以利用PHP支持使用自定义配置文件这一事实来解决此问题。
唯一需要注意的是,这些文件必须位于特定目录中,我们可以通过输入以下内容确定:
php -i | grep“其他.ini文件”
现在,我们掌握了创建自定义配置文件并将其添加到正确位置的所有信息。
bash -c'echo“ zend_extension = / opt / cpanel / ea-php72 / root / usr / lib64 / php / modules / ioncube_loader_lin_7.2.so”> /opt/cpanel/ea-php72/root/etc/php.d /00-ioncube.ini'
请注意,我们的自定义.ini文件前缀为00,这是一种在其他PHP配置文件之前加载它的方式,以确保其运行时不会与其他自定义配置文件发生冲突。
配置和服务器重启
ionCube loader PHP扩展现在应该已正确安装。但是,在使用它之前,我们需要做一些整理工作。
安装后,请务必执行以下操作:
- 重新加载服务器
- 重新启动PHP引擎
- 清除网站缓存
可以通过命令行重新加载服务器,但是确切的命令将因服务器设置不同而异。由于我们在服务器上运行Nginx,因此我们使用:
须藤/etc/init.d/nginx重新加载
可以直接从cPanel或仪表板重新启动PHP。重新启动PHP通常需要几秒钟,完成后将显示一个弹出通知。
您应该做的最后一件事是清除网站缓存,以确保您看到的是对服务器配置的最新更改。
完成这些最后步骤后,现在应在服务器上正确安装并配置ionCube loader,以解密PHP编码文件。
厌倦了低于标准的1级WordPress托管支持而没有答案?试试我们世界一流的支持团队!查看我们的计划
验证ionCube Loader安装
要验证ionCube loader是否已正确安装和配置,您可以做几件事。
首先,使用php -i
如果安装了ionCube loader,则详细信息将显示在输出中。
但是,这会将大量数据输出到终端,您必须手动滚动浏览以查找ionCube引用。实际上,php -i的输出通常超过1000行文本。
您可以使用php -i | wc -l terminal命令查看输出行的确切数量。
手动搜索终端输出确实不可行,因此我们可以将php -i的输出直接通过管道传递到grep命令中,只返回我们感兴趣的信息。
为此,请在终端窗口(仍通过SSH连接到您的网络服务器)中输入以下内容:
php -i | grep ioncube
如果您看到对ionCube loader的引用,则说明安装成功。
您还可以通过php -v terminal命令访问有关ionCube加载程序的信息。如果已安装,它将显示ionCube loader的特定版本。
如果您没有通过php -i或php -v看到与ionCube有关的任何输出,则说明安装可能出现问题。在这种情况下,您可以尝试根据需要重做部分(或全部)安装步骤,以查看它是否可以解决此问题。
如果问题仍然存在,请与您的房东联系,房东将为您提供所需的适当操作。
测试ionCube安装
除了简单地验证是否已安装ionCube加载程序外,还值得进行一次实时测试,以确保扩展程序在生产文件上使用之前能够按预期运行。
现在,通过对PHP文件进行编码并测试将其上传到服务器后是否可以正常执行来完成此操作。编码PHP代码最简单的方法之一就是使用在线编码器。
在上传要编码的文件之前,您需要注册一个免费的ionCube帐户。单击“登录”菜单项,然后按照屏幕上的提示创建帐户。
登录后,您将可以访问编码器上传页面。
通常,为生产代码编码PHP文件需要付费,但出于测试目的是免费的。
任何经过编码的测试文件只能通过ionCube解码器PHP扩展程序进行有效解码,最长持续8小时,此后它们将过期,并且不会被解码。但这是足够的时间来测试一切是否正常工作。
创建一个测试PHP文件,并将其上传到在线编码器。确保选中“测试编码”框。
然后,上传的文件会自动放入要编码的队列中。如果此过程成功完成,则几秒钟后,您将看到一个显示结果的页面以及一个用于访问编码文件的下载链接。
下载文件时,您会注意到该文件已附加了当前时间戳,以区别于原始文件。
例如,我们对原始文件名ioncuber-loader-test.php进行了编码,然后可以作为ioncuber-loader-test-encoded-190924-100632.php下载。
您可以在测试文件中包含所需的任何有效PHP代码。对于我们的测试PHP文件,我们添加了一个简单的函数,该函数返回要显示的数字和消息。
<?php
函数mySecretFunction(){
返回'42';
}
回声“
ionCube Loader测试页
“;
回声“
编码函数的输出:“。mySecretFunction()。
”
“;
相比之下,在通过编码器运行之后,下载的文件包含以下内容:
1 && $ __ id(1)==':'){$ __ id = str_replace('\','/',substr($ __ id,2)); $ __ here = str_replace('\','/', substr($ __ here,2));} $ __ rd = str_repeat('/ ..',substr_count($ __ id,'/'))。$ __ here。'/'; $ __ i = strlen($ __ rd); while( $ ____–){if($ __ rd($ __ i)=='/'){$ __ lp = substr($ __ rd,0,$ __ i)。$ __ ln; if(file_exists($ __ oid。$ __ lp)){ $ __ ln = $ __ lp; break;}}} if(function_exists('dl')){@ dl($ __ ln);}} else {die('文件'.__ FILE__。“已损坏。 n”); } if(function_exists('_ il_exec')){return _il_exec();} echo(“站点错误:”。(php_sapi_name()=='cli'?'ionCube':'ionCube')。“ PHP加载程序需要安装。这是一个广泛使用的PHP扩展,用于运行受ionCube保护的PHP代码,网站安全和恶意软件拦截。 n n请访问“。(php_sapi_name()=='cli'?'get-loader.ioncube.com': 'get-loader.ioncube.com')。”以获取安装帮助。 n n“);出口(199);
?>
HR + cPrb0lpjMgGF / p2 / rAXWaVsF5lgbOo0LYkBQu2sZ7cHDIXwoQ + LPTtnDTw0hOl5Yfp7CvmV5c
bV90201GkQl3Lr5trbc0XXBJxV + hFqwsyPhXemDwQ37Lf0HHckqLWF5yXiIoErSIQzS8RbI1n49R
e2kRxmrwA + P2WbIZabhhXUPGZcn91NmJyW4qKz3xynZh + nvarORpi8tXqwPA3QUY7QZtwABJQs3U
lLpo3 + X9sowLMgzttHBNNcGOZ73HVSgZ9eUtTRCeaswT4geKbT2qa0LgL8vhtl7RuymBklX1Rm0Q
1Aete / XaFhX6YG + B66t6nXBisZ5 + P1O3YomFuW + rhbMbT1w3lk + MY + Ri5SCnRuvMig8ZWkchG3wX
XMpoGoP2uWectVSOROY + vmaGD + WTFjEFyw1C93T5qU4If5Ql / AdXA7s + ISvH8D5rqKSheLfnBQ2d
yx5yu5FEMrJwLA9g2g3xf2OSV5X1 + 1DmkRVEvY0tcukjjYVCcvbDKSBQpigXvYiTHAouI5ANmYbR
pMURAoAO9gUSm3Bul7HZdaQRwH2Fyp3na3hWGiSTdp5EXEDMTKRWtiB5nPPQ3MmVO6F2Er62h3Ov
N0oR6uCDj / y11u3Re6BQ2laN2k9m9ylnsMYketpe + OOMaoA6 + n1yVpYWkBra + vr + Veh9 + oQkXQBP
ZG4bUtd + 4UIWW057ZMkKS4 + 2S3dSDHjcU / Op9ZSp2VFpSOlaqssNgA9WMGP0b8xhbTOPx6FqgY09
/ WnmQyto9goSeIfAcc1braP74ILD9DLwVRG1aXHIC6WGhPYzafs + gut8DHebHUzSPj3JYu9t6 / w2
1Nnuc5Dso5SnAa8v2AabXUvZBpQrYTf8tY1L0zL8sqTIvTlv / tRCpsu4hrwFg7hqx + 6OsXaWiLwY
xtfwBfCbGS1a / c2 + OhUujEllco6gB1KoekhLv9xVj70cRWRgnf + nSCcCcc2bFjk4 + VtJh + 07M9CRO
vqaTu78gagPGMVFYebH5AvOLOKn8Ao1A1lX + GdiD0mLr8BAQ2jrZx1i8wZ0ILNuKRFWvFnYK4Bjg
SYImW2oc6Mg / u50B / Y + mjAeIbpUfm + Ksetd5n2sFetQt831K3u891bKBPw8AzqtGzhLjihFhORCG
BIwx + aA8AvUMeR4Uuk / FdyxATCqly93 / crGkCwUQWrvPY5hA9KvtmOFvYPUVpuFZKS5BPzUySat3
ChtDQpr7H7N9phQvoSZ7pTBOGoyfVDTn1abQVMYQXbrW + yee + wBnGiUpGpR3MgkUPHKX / N36 + P8o
Ld5obAtVtNjgiQjcYwI6KkrNmH22sqHlILAnR7yUn0 ==
这是原始源代码完全无法识别的,因此编码器已完成工作!
现在的重要问题是:安装的ionCube解码器扩展程序是否能够分析文件并对其进行解码,以便可以将其作为普通的PHP代码执行?
为了找出答案,我们将两个PHP文件都上传到服务器,并在浏览器中对其进行了查看。首先是包含原始PHP代码的原始文件。
该页面按预期显示。现在用于编码的PHP文件。
显示的内容完全相同,因此ionCube解码器扩展程序已验证为已安装且可以正常工作。
检查错误日志中的安装问题
验证安装是否成功的最后一件事是查看服务器错误日志,并查找与ionCube安装有关的最新条目。
如果您在错误日志中看到与以下内容类似的内容,则需要联系您的主机,以便他们进一步调查:
PHP致命错误:文件
/www/sitename_xxx/public/wp-content/themes/theme-name/functions.php由适用于PHP 5.6的ionCube编码器编码,不能在PHP 7.1下运行
访问错误日志所需的步骤因主机而异,因此最好不确定是否位于错误位置。
Kinsta客户可以在MyKinsta仪表板中查看错误日志。
需要在您的应用程序中加密PHP吗?通过此深入指南,了解如何使用和安装ionCube Loader! ⛓?
点击鸣叫
摘要
希望现在,您已经安装了ionCube Loader PHP扩展程序并可以在服务器上使用。让我们花点时间回顾一下我们所做的事情。
我们了解到,ionCube加载程序是一个PHP扩展,具有专用功能,可以根据服务器的请求即时解密以前加密的PHP文件。
为此,当使用SSH连接连接到服务器时,需要通过一系列终端命令正确安装加载程序。
与服务器建立安全连接后,就可以开始ionCube loader扩展安装过程,该过程可以分为以下几个步骤:
- 将正确的ionCube loader档案下载到服务器上的临时文件夹中。
- 解压缩下载的存档。从众多与安装的PHP版本匹配的提取文件中选择适当的.so ionCube加载程序文件。
- 将ionCube loader .so文件复制到PHP扩展文件夹。这是特定PHP安装所独有的固定位置。
- 通过编辑主php.ini文件或创建自定义.ini文件,在PHP中启用ionCube加载程序。添加一个新的zend_extension,指向已安装的ionCube加载程序文件的位置。
- 要真正开始处理加密的PHP文件,需要重新加载服务器,然后重新启动PHP引擎。确切的过程因服务器而异。有时也需要清除网站缓存。
- 使用php -i和php -v命令,通过终端验证ionCube安装是否成功。
- 最后一步是进行实时测试,以确保ionCube装载机能够按预期工作。您可以使用在线编码器免费加密PHP文件,只要它只是出于测试目的。
如果在安装过程中出现任何问题,或者只是为了省心,您还可以检查服务器日志中是否可能发生任何错误。
轮到您了:您对ionCube Loader的体验是什么?让我们在评论中知道!
0分享
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
.essb_links .essb_links_list li a {
margin-top:0px;
}
@media only屏幕和(最小宽度:64em){
.container–narrow.pb–60,
.knowledgebase .user-content {
职位:相对
}
.widget-share {
位置:绝对;
左:-200px;
顶部:0px;
高度:100%;
宽度:200像素;
框大小:border-box;
}
.widget-share-aligner {
宽度:200像素;
padding-right:62px;
框大小:border-box;
}
html(lang =“ nl”).widget-share-aligner {
宽度:210像素;
}
.widget-share-inner {
padding-bottom:62px;
}
.knowledgebase .user-content .widget-share-inner {
padding-top:0;
}
.widget-share .amount {
显示:flex;
align-items:居中;
证明内容:flex-end;
宽度:100%;
右边距:11px;
font-size:14px;
font-weight:500;
底边距:10px;
}
.widget-share .amount svg {
右边距:8px;
margin-left:10px;
}
.essb_links .essb_links_list {
flex-direction:列;
align-items:flex-end;
}
.essb_links .essb_links_list li {
显示:块;
margin-bottom:5px!important;
}
.widget-share__total {
margin-bottom:0px!重要;
}
.widget-share__total .heading–small {
颜色:#999999;
font-size:14px;
字体粗细:300;
}
.essb-total-value {
margin-right:4px;
}
}
.essb_links {
保证金:0px;
填充:0px;
}
.essb_counter_right {
显示:无!重要;
}
.essb_links.essb_template_circles-retina .essb_link_hackernews一个,
.essb_links.essb_template_circles-retina .essb_link_reddit a,
.essb_links.essb_template_circles-retina .essb_link_mail a,
.essb_links.essb_template_circles-retina .essb_link_mwp一个,
.essb_links.essb_template_circles-retina .essb_link_buffer a,
.essb_links.essb_template_circles-retina .essb_link_linkedin a,
.essb_links.essb_template_circles-retina .essb_link_facebook a,
.essb_links.essb_template_circles-retina .essb_link_twitter a
{
颜色:#43414e!important;
背景:#f3f3f6!important;
}
.essb_links.essb_template_circles-retina li a:focus,.essb_links.essb_template_circles-retina li a:hover {
border-color:#fff!important;
背景:#43414e!重要;
}
.essb_links.essb_template_circles-retina a {
border-color:#f3f3f6!important;
背景:#f3f3f6;
}
.essb_links .essb_icon:之前{
font-size:15px!important;
顶部:8px;
左:9px;
}
.essb_links .essb_icon {
宽度:32px;
高度:32px;
}
.essb_links.essb_counter_modern_right .essb_counter_right {
背景:#f3f3f6!important;
}
@media only屏幕和(最大宽度:63.999em){
.widget-share-aligner {
位置:相对!重要;
top:0!重要;
}
.essb_links .essb_links_list li {
margin-right:8px!important;
}
}