行得太快,記得太少 Living in IT…

6一/120

修复php-5.2.x和php-5.3.x hash dos漏洞

最近爆发出来的hash dos漏洞威力十足,杀伤力很大。随便一台服务器就可以发起ddos攻击,导致cpu长期占用100%,从而使服务器down机。下面给出php-5.2.x和php-5.3.x的修复方法。
php-5.2.x:
到这里https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars下载对应的补丁版本,进入php目录,执行patch -p1 < php-5.2.*-max-input-vars.patch打上补丁,之后make 和make install即可。
php-5.3.x:
php-5.3.x没有提供相应的补丁版本,laruence建议使用php5.3.x的升级到5.3.9RC4或者按照php5.2.x的补丁修改适应成php5.3.x的补丁。下面我们提供直接修改文件的方法,虽然比较麻烦。
1、修改/main/main.c文件,把STD_PHP_INI_ENTRY宏加到main.c的PHP_INI_BEGIN()和PHP_INI_END()宏之间来注册PHP INI指令:

  1. STD_PHP_INI_ENTRY(" max_input_vars", "1000", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateLongGEZero, max_input_vars, php_core_globals, core_globals)

2、修改文件/main/php_globals.h,_php_core_globals结构体内加上:

  1. long max_input_vars;

3、修改文件/main/php_variables.c,在:

  1. zend_symtable_update(symtable1, escaped_index, index_len + 1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);

之前加入:

  1. if (zend_hash_num_elements(symtable1) >= PG(max_input_vars)) {
  2. php_error_docref(NULL TSRMLS_CC, E_ERROR, "Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.", PG(max_input_vars));
  3. }

一共有两处,第一处数组中的键时的操作,而第二处是普通变量时的操作。

分类: PHP 没有评论
14六/110

Allowed memory size of bytes exhausted解决方法

修改 php.ini
将memory_limit由 8M 改成 16M(或更大,我该到1024M,其实用不到,大点保险),重启apache服务

分类: PHP 没有评论
31五/110

通过IP获取地理位置

function get_ip_place()
{
    $ip=file_get_contents("http://fw.qq.com/ipaddress");
    $ip=str_replace('"',' ',$ip);
    $ip2=explode("(",$ip);
    $a=substr($ip2[1],0,-2);
    $b=explode(",",$a);
    return $b;
}
分类: PHP 没有评论
23五/110

PHP导出 Excel文档

项目中需要通过PHP导出数据到Excel,自己研究了一下,通过以下方法即可实现!简单方便!

    header("content-type:application/vnd.ms-excel; charset=UTF-8");
    header("content-disposition:attachment;filename=test_data.xls");
 
 echo iconv("UTF-8", "gb2312","日期")."\t";//如输出汉字,需要转码
 echo "\t\n";//换行
 
 foreach($pdo-&gt;query($sql) as $rs){
    echo $rs[d]."\t";
    echo "\t\n";
}
分类: PHP 没有评论
4五/110

NPMserv的PDO配置问题

最近在研究Yii框架,运行期间遇到

include(PDO.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

这样的报错,猜测应该是PDO配置问题,查看了NPMserv的php.ini文件,发现[PHP_MYSQL]段已经配置了extension=php_pdo.dll,但是发现ext文件夹里没有php_pdo.dll,于是到其他php包里拉来一个php_pdo.dll扔进去,重启nginx,查看phpinfo,PDO已经打开,问题解决!建议在[PHP_MYSQL]里把extension都配置上,

extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
extension=php_pdo_oci8.dll

但要保证ext里有这些dll文件,这样就省去了麻烦。

分类: PHP 没有评论
22十/100

几个Open Flash Chart小例子

Open Flash Chart 是一个用来生成Flash的图表的组件,项目首页有很多漂亮的Flash图表以及使用示例。工作需要,今天研究了下Open Flash Chart,很简单,附上例子一份,希望对大家有帮助。

http://www.mediafire.com/?lhlzn6h9dadwa1j

分类: PHP 没有评论