根据php语言解释型的特性,结合个项目需求,我们就可以使用php.exe(php解释程序)对php代码进行解释应用,使得php不仅适用于web环境也适用于本地处理,如:gtk等。
我手中有一项目采用delphi通道(pip)方式调用phpexe解释器,解释php代码完成web中的过程。
但是另一方面弊端又体现出来,由于php采用开源方式,不同用户很容易看到使用php语言所篇写的源程序,对源程序进行分析,很容易的得到数据连 接,处理流程,甚至服务器名等重要信息,同样的也不利于软件开发商的版权保护。因此就必须对php源代码进行加密授权处理,即(encode化与 license授权)
当前市场上较流行的对php进行上述加密授权的软件主要有二种:
(1)zend公司的zendguard。—-当前最新版本5.0.1(2008/06/17)
(2)ioncube公司的ioncube php encode。—-当前最新版本6.5(2008/06/17)
对于这两各较常用的encode软件其二者有着不同的功能与各自的优点。
zend guard
zend guard只能对带有php标记或源码的文件进行加密(如:.php,inc等),对于其他不带有php标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
支持php4.2.x~5.2.x版本的加密。
使用的zendoptimizer(php引擎)可以提高源码20~50%以上的速度优化,结合zendguard可以提高至50%以上的性能速度 优化,且zendoptimizer可以安装于当前较多主流系统中。(在使用zendguard加密时可选择zendoptimizer版本进行更多的优 化处理),另外,zendguard只能用于配置了zendoptimizer的环境中,不能独立运行。(必须在php.ini文件中进行配置)
*另外需要值得注意的是zendguard在php4下的错误,对于php4的绝对路径及相对路径在加密时会出现较大的差别。
在php4.4.1环境下,如有如下两个文件:
test.php
引用:
<?phprequire_once(”inc/test1.php”);?>
inc/test1.php
引用:
<?phpecho realpath(dirname(__file__));?>
不进行加密的前提下,显示的结果是: c:/localweb/zendtest/inc
但是加密后却显示: c:/localweb/zendtest-encode/zendtest
可以发现经过zendguard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__file__被当成临时常量显示了出来)。
*该问题经测试,在php5.2.6环境下没有发现该问题。
ioncube php encode
ioncube php encode,由ioncube开发,用于对php或非php文件进行加密工作。ioncube在功能方面经过测试可以优胜于zend公司的zendguard,不仅支持期限,注册码,等加密方式,还支持对ip,mac地址等复杂的加密方式。另外,对于ioncube来说不仅可以加密带有 php标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用 ioncube所提供的读入api进行读写操作。)
可加密的php版本从php4.0.6~5.2.x(比zendguard高2个级别)
ioncube与zend一样,为了提高php性能优化也提供了相应的php引擎,可以为大多数操作系统提供php优化功能,但是可惜的是,至今未提供windows版本的php引擎。
对于之前zendguard中所说的php4环境下路径问题,在ioncube中没有出现,可以看出ioncube相对稳定。
对于ioncube来说,对带有php标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用 “ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ioncube加密前需要对相应的php代码进行改造后才能使用。
以上就是php源码为什么要加密的详细内容。
