将ioncube加载器捆绑到应用程序中

时间:2014-03-13 10:41:20

标签: php apache ioncube

我想知道是否可以创建一个加载器文件,该文件处理加载离子立方体加载器。通常的方法是编码文件尝试检测离子立方体加载器并在无法找到时抛出错误:

if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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($__i--){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('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);

根据托管环境,插入离子立方体装载器,例如通过php.ini文件将其声明为ZendExtension。 可以将ZendExtenion的加载直接移植到php文件并将加载器捆绑到php文件而不是安装ioncube加载器吗?

1 个答案:

答案 0 :(得分:1)

不是真的。 PHP曾经有一个名为dl()的函数可以动态安装PHP模块,这就是ionCube编码文件开头的代码与其“运行时加载”机制一起使用的内容。加载器可以与应用程序捆绑在一起,应用程序通常可以在没有任何安装更改的情况下运行,这非常棒。 PHP 5.2.5中有一些变化对这种机制产生了一些影响,但是从PHP 5.3开始,dl()实际上变得不那么有用了,它从一些SAPI中删除了。该机制仍适用于某些服务器,但php.ini安装通常是现在所需的方式。