2014-03-13 33 views
0

我想知道是否可以创建加载文件,该文件处理加载离子立方装载程序。通常的方法是,编码后的文件会尝试检测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); 

根据托管环境中,Ioncube公司装载机例如插入通过一个php.ini文件声明它为ZendExtension。 可以将ZendExtenion的加载直接移植到php文件中,并将加载器绑定到php文件而不是安装ioncube加载器?

回答

1

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

+0

我不知道是否提供引导php脚本来安装/增强php.ini文件来解决这个问题是个好主意? – Stefan

+0

这样的PHP脚本不太可能具有创建php.ini文件的写入权限,所以通常这是不可能的。有一个ionCube加载器向导脚本,可以提供关于要编辑的内容的建议,也可以下载编辑后的php.ini文件进行安装。现在还有一个ionCube加载程序安装程序,可以通过FTP或SSH将必要的加载程序部署到本地或远程服务器。有权访问目标服务器,安装程序*可以根据需要创建和/或编辑php.ini文件,并推荐使用。安装人员还可以创建支持票以获得帮助。 – Nick

+0

写入权限可能是一个问题,但主要问题是安装Ioncube编码软件的人员不希望受到ioncube loader任何安装方式的困扰。假设你有(例如在一个CMS中)包含主要index.php的通常目录,php.ini文件只需要放在同一个目录中。 – Stefan