June 4, 2012
linux nginx php木马排查及加固整理
"1、改变目录和文件属性,禁止写入\nfind -type f -name *.php –exec chmod 444 {} ; find -type d -exec chmod 555 {} ;\n注:当然要排除上传目录、缓存目录等; 同时最好禁止chmod函数,攻击者可通过chmod来修改文件只读属性再修改文件\n2、php配置 禁用危险函数\npassthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter, ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,popen,dl, syslog,show_source\n3、nginx配置\n限制一些目录执行php文件\nlocation~^/images/.*.(php|php5)$ { denyall; } …"
May 26, 2012
Linux下独立添加PHP扩展模块mbstring 和 curl
"环境php5.2.13, 不支持mbstring扩展 假如php的源码包在/usr/local/src/php-5.2.13 php安装目录是/usr/local/php\n# cd /usr/local/src/php-5.2.13/ext/mbstring/ # rpm -qa|egrep “autoconf|gcc” 这个是检测这些组件是否安装,没有安装请执行下面这句,否则会报错 # yum -y install autoconf gcc gcc-c++ # phpize # ./configure –with-php-config=/usr/local/bin/php-config # make # make install\n执行完毕后在php.ini里增加\nextension=mbstring.so\n重启web服务器, 看一下phpinfo, 应该支持mbstring了!\n=================================== 1.安装curl\nwget http://curl.haxx.se/download/curl-7.19.6.tar.gz tar …"
May 26, 2012
You could try using –skip-broken to work around the problem 解决办法
"–\u0026gt; Missing Dependency: libevent-1.4.so.2()(64bit) is needed by package mysql-proxy-0.5.1-2.el5.x86_64 (epel)\nError: Missing Dependency: libevent-1.4.so.2()(64bit) is needed by package mysql-proxy-0.5.1-2.el5.x86_64 (epel)\nYou could try using –skip-broken to work around the problem\nYou could try running: package-cleanup –problems\npackage-cleanup –dupes\nrpm -Va –nofiles –nodigest\nThe program package-cleanup is found in the yum-utils package.\n解决:\n[root@oracle10g bin]# yum –skip-broken update"
May 26, 2012
CentOS 5.1安装php mcrypt和mbstring的扩展
"还是先说系统及php相应的版本:\nCentOS 5.1 内核 2.6.18; php 5.2.6 ;phpmyadmin3.2.2\n其 实大家遇到的问题是phpmyadmin 3.2.2 这个版本需要更高的php版本来支持,当然CentOS 5.1 5.2 5.3这些版本的php都是5.1的,所以问题就自然来了。如果我们要安装php-mcrypt和php-mbstring 的扩展,用系统自带的yum 来升级安装是不行的。但是用rpm 或源码安装也是没有问题的。可是我从网上找了很多帖子不是这里有问题就是那里不行。今天就尝试下看是否有更快捷的方法。\n结果还真是让我三番五次的试出来了,下面我就给大家说明下。\n因为很多博客系统和网站都需要一个GD库的支持,默认情况下很多是不直接支持的,需要我们单独安装,所以为了升级安装我的php版本我从网上找了一个yum升级的源:http://www.jasonlitka.com\n这样我们要具体做得就是更改 /etc/yum.reposd 里面的文件,我们先把原有的文件全部进行重命名的备份,然后新件一个 .repo后缀的文件 名字自己随便起,在这个文件中添加内 …"
May 26, 2012
解决办法The page you are looking for is temporarily unavailable错误,php-cgi没启动
"今天访问WordPress程序做的网站,突然出现The page you are looking for is temporarily unavailable错误,服务器环境为: Linux+Nginx+MySQL+PHP。于是上网查找解决方法,找到以下两个解决方法,作为参考:\n** 解决方法一:**\n访问discuz论坛很正常,但是一旦访问uc_server的后台就这样nginx就提示以下错误:\nThe page you are looking for is temporarily unavailable. Please try again later.\n1.先检查PHP FastCGI进程数是否够用:\nnetstat -anpo|grep “php-cgi”|wc -l 如果输出为0的话,则表示FastCGI 进程数够大,可通过修改php-fpm.conf或者使用 http://blog.haohtml.com/archives/5530 介绍的命令修改\n2.此时则修改scgi_params文件,找到:\nscgi_param SCGI 1;\n把它改为:\nscgi_param …"
May 25, 2012
New HTTP status codes
"RFC 6585 has been published quite recently. This document describes 4 new HTTP status codes.\nSo in case you were wondering, yes.. HTTP is still evolving :), and these new statuses may be quite useful for developing your REST, or otherwise HTTP-based service. This post describes why they are important, and when you should use them.\n428 Precondition Required A precondition is something a client can send along with a HTTP request."
May 25, 2012
MySQL数据库的IO操作
"导读:\n淘宝丁奇分享的PPT:MySQL数据库的IO操作,详细分享了四块的内容,并且告诉大家如何调整MySQL数据库IO操作相关的参数,给出了详细的选择策略,现替其整理成文章分享与此。\nPPT内容提纲:\n1.MySQL的文件及简介\n2.数据访问流程\n3.文件访问模式\n4.影响io行为的一些参数和选择策略\n1.MySQL的文件及简介\n2.数据访问流程\n一个简单的查询 select * from t where id\u0026gt;=( select id from t where k1=100 limit 100000,1) limit 2;\n表结构:\nCREATE TABLE t (\nid int(11) NOT NULL,\nk1 int(11) DEFAULT NULL,\ndata char(100) DEFAULT NULL,\nPRIMARY KEY (id),\nKEY k1 (k1)\n) ENGINE=InnoDB DEFAULT CHARSET=gbk;\n3.数据访问流程\n4.数据访问流程\n一个简单的更新 insert into t values(1, 100, ‘abcd’);\n5. …"
May 25, 2012
从PHP客户端看MongoDB通信协议
"MongoDB的 PHP 客户端有一个 MongoCursor 类,它是用于获取一次查询结果集的句柄(或者叫游标),这个简单的取数据操作,内部实现其实不是那么简单。本文就通过对 MongoCursor 类一些操作进行分析,向大家揭开 MongoDB 客户端服务器通信的一些内部细节。\ngetNext与网络请求 通常来说,每一次find操作都会返回一个MongoCursor对象,在这个对象上调用getNext方法,就能够获得一条结果数据。循环调用getNext方法就能获取多条数据。下面我们就来看看其内部取数据的具体逻辑。\n首先我们用最简单的方法来生成一个MongoCursor对象:\n$m = new Mongo(); $collection = $m-\u0026gt;demoDb-\u0026gt;demoCollection; $cursor = $collection-\u0026gt;find(); 当我们调用 find 方法的时候,会生成一个 MongoCursor 对象,而这时候只是生成一个内存中的对象而已,并不会把我们的 find 查询发送到服务端,因为在生成 MongoCursor 对象后,我们还可能对 …"
May 12, 2012
MongoDB 客户端 MongoVue
"今天在同事那里看到了一个很不错的MongoDB的客户端工具MongoVue,地址是http://www.mongovue.com/。做的不错,1.0版本的开始收费了,费用也不贵才35$。真正需要的同学可以掏点钱买个吧,也算是支持这个工具,如果只是学习研究用的话我这里还有一个0.9.7版本,虽然比起1.0版来说有些bug,平常使用也够了,需要的同学可以单独联系我。\n1.0版之后超过15天后功能受限。可以通过删除以下注册表项来解除限制:\n[HKEY_CURRENT_USER\\Software\\Classes\\CLSID{B1159E65-821C3-21C5-CE21-34A484D54444}\\4FF78130]\n把这个项下的值全删掉就可以了。\n下面上图给大家感受下强大的MongoVue,可以提高你使用MongoDB的幸福指数好几十点,上图是王道:\n1、配置连接\n2、试下新建一个名为AccessLog的Collection :\n3、插入一个Document\n4、查看我们插入的数据,数据可以通过多种方式展示(树形、表格、文本)\n上面我们都是通过图形界面的操作的吧,下面有一个窗口列出了上述操 …"
May 11, 2012
ps和pstree
"ps和pstree是用于系统分析的基本命令。ps有3中不同风格的命令选项,UNIX风格、BSD风格和GNU风格。这里我们只介绍UNIX风格选项。\nps命令可以显示当前运行的进程列表。top命令也可以显示进程信息,但ps可以提供更加详细的内容。使用相应选项可以影响进程显示的数量。ps -A命令可以列出所有进程及其相应的进程ID(PID),当我们使用如pmap或renice等工具时会用到此PID。\n当系统运行java应用时,ps -A产生的输出结果很容易填满整个显示区域,这导致很难得到所有运行中进程的完整视图。在这种情况下,pstree命令就派上用场了,它使用树状显示所有运行中的进程并合并所有的子进程(例如java线程),pstree命令有助于确认原始进程。还有另一个ps变种pgrep也非常有用。\n例子2-4:ps输出示例\n下面我们来了解一些常用的选项\n-e :所有进程。等同于-A\n-l :显示长格式\n-F :附加全格式\n-H :显示进程的层次结构\n-L :显示线程,可能出现LWP和NLWP栏位\n-m :在进程后显示线程\n下面的命令演示输出进程的详细信息:\nps -elFL\n例子2-5:输 …"