下面要介绍如何在Linux下安装ionCube Loader。
1. 下载ionCube http://www.ioncube.com/loader_download.php, 通过这个链接可以找到对应的版本,我使用wget从命令行获取Linux64版本。
wget -c http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
2. 解压 tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
3. 在解压后的文件夹了可以找到ioncube-loader-helper.php, 把它拷贝到网站的目录下,例如:
cp ioncube-loader-helper.php /var/www/html/
4. 然后在浏览器下打开ioncube-loader-helper.php,点击Server System Information链接,它会根据你的系统配置,告诉你应该使用那个ionCube-loader模块,并且告诉php.ini的路径。
5. 接下来把相关模块复制到/usr/local/(或者其他目录),根据第四步的提示在php.ini里加入一行。例如:
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so
注意:如果你的php.ini里没有zend_extension,你可以把这行加在任一位置,否则,把它加在第一个zend_extension语句前。
6. 保存php.ini,重启服务器。在我们的服务器上使用到的命令是:/etc/init.d/httpd restart
另外我还在ZendChina上看到一篇关于ZendGuard 与ionCube工具比较的文章,ZendGuard也是一款对PHP源码加密的工具,ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行。据说使用的ZendOptimizer(PHP优化引擎)可以提高20~50%的源码执行速度,如果结合ZendGuard可以把速度提高至50%以上。我们公司的网站还没有使用PHP加密和PHP优化,有机会一定要试试。
不知PHP的加密是否违背开源的理念?
ionCube loader 类似 zend 的 php 加密 工具
昨天下了一款奥瑞文的在线考试系统,打开首页,提示:
"requires the ionCube PHP Loader ioncube_loader_win_5.2.dll to be installed by the site administrator”
这是缺少ionCube loader,即ionCube解密工具的原因。
ionCube Encoder可以把PHP源代码转换成ByteCode。进行加密授权处理后的PHP代码就不在开源了,必须使用ionCube loader才可以执行加密过的PHP代码。PHP本身没有带有ionCube loader模块, 必须到ionCube网站下载。ionCube loader是免费的,但是Encoder的价格就比较昂贵(起价$199)。
好在该考试系统里面集成了loader的文件包,免去我下载的麻烦。我办公的电脑不可以连互联网,现在打字这台是查资料的电脑。
打开后,确定存在Loader ioncube_loader_win_5.2.dll文件,
然后再php安装目录下,找到php-apache2handler.ini文件。搜索其zend_extension_ts
并在其后插入一段:zend_extension_ts="e:\phpnow\php5.2\oes\ionCube\Loader ioncube_loader_win_5.2.dll"。
Loader ioncube_loader_win_5.2.dll文件的路径自己替换成你的。
重启apache,测试效果。
英文好的,也可以查看ioncube-loader-help.php文件自行安装配置
The + operator appends elements of remaining keys from the right handed array to the left handed, whereas duplicated keys are NOT overwritten.
今天 再次看 php manual的时候,才知道
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = $b + $a; // Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>
When executed, this script will print the following:
Union of $a and $b:
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
Union of $b and $a:
array(3) {
["a"]=>
string(4) "pear"
["b"]=>
string(10) "strawberry"
["c"]=>
string(6) "cherry"
}
原来,我的理解就是。直接把$b中的元素直接复制到$a中。
我错了。
小弟来解释下 为什么
var_dump(in_array(0, array('s' ));
这句话的结果是bool(true)。
因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型,根据php manual 中“Comparison Operators” 一章的说明可知,number 和string进行
比较的时候,会先将string类型首先转化为number,然后再进行比较操作。 's'转化为number的结果为0,而0 == 0 的结果是true,所以in_array(0, array('s', 'ss'))的结果也是true
如果把in_array 的第三个参数strict设置为 true,比较的时候 就会判断值和类型是否都相当。如果都相当的话,才会返回true,否则返回false.
仅此为记。