问佛:为什么总也遗憾?
佛曰:没有遗憾,无法体味幸福。
问佛:为什么下雪总在夜里?
佛曰:美好的东西总在不经意间流走。
是日高考,书“大同世界,焉能忘本?”,感慨系之,故作此文。后之览者,亦将有感于斯文。
阅读全文
佛曰:没有遗憾,无法体味幸福。
问佛:为什么下雪总在夜里?
佛曰:美好的东西总在不经意间流走。
是日高考,书“大同世界,焉能忘本?”,感慨系之,故作此文。后之览者,亦将有感于斯文。

2011年高考今天正式拉开帷幕,933万学子参加考试。11:30语文考试结束,2011全国各地高考作文题相继出炉。
阅读全文

导出一台电脑里的IE收藏夹到另外一台后,发现乱码,只好重新修改了导出的文件编码,可刚才的网址已经导入了众多,如果一条条删除很费时,也很麻烦,于是需要清空的快捷方法,上网查了下,直接删除就行了:
C:\Documents and Settings\Administrator\Favorites
里面去删拉
C:\Documents and Settings\Administrator\Favorites
里面去删拉
NGINX_HTTP_Push_Module是一个Nginx服务器模块,可以实现服务器端的长连接和推送(但是推送一次后会结束进程,尚未实现持续的推送)。
NGINX_HTTP_Push_Module是一个Nginx服务器模块,可以实现服务器端的长连接和推送(但是推送一次后会结束进程,尚未实现持续的推送)。
http://pushmodule.slact.net可以下载该模块。
如果已安装Nginx,需要重新编译安装Nginx,要用命令"./configure --add-module=/home/hfahe/ngnix_http_push_module"来配置,然后执行make和make install来安装Nginx。
安装完成后,在Nginx配置文件的Server段里添加两个路径配置:
location /publish {
set $push_channel_id $arg_id;
push_publisher;
push_store_messages on;
push_message_timeout 2h;
push_max_message_buffer_length 10;
}
location /activity {
push_subscriber;
set $push_channel_id $arg_id;
push_subscriber_concurrency broadcast;
default_type text/plain;
}
重启Nginx后,请求http://localhost/activity?id=10000的地址,可以看到浏览器处于请求堵塞阶段。
阅读全文
NGINX_HTTP_Push_Module是一个Nginx服务器模块,可以实现服务器端的长连接和推送(但是推送一次后会结束进程,尚未实现持续的推送)。
http://pushmodule.slact.net可以下载该模块。
如果已安装Nginx,需要重新编译安装Nginx,要用命令"./configure --add-module=/home/hfahe/ngnix_http_push_module"来配置,然后执行make和make install来安装Nginx。
安装完成后,在Nginx配置文件的Server段里添加两个路径配置:
location /publish {
set $push_channel_id $arg_id;
push_publisher;
push_store_messages on;
push_message_timeout 2h;
push_max_message_buffer_length 10;
}
location /activity {
push_subscriber;
set $push_channel_id $arg_id;
push_subscriber_concurrency broadcast;
default_type text/plain;
}
重启Nginx后,请求http://localhost/activity?id=10000的地址,可以看到浏览器处于请求堵塞阶段。

安装mod_bw 和 mod_limitipconn 都非常简单。
阅读全文

Apache模块开发/用C语言扩展apache(1:简述)
by linux_prog
Apache是一个非常稳定而且非常open的web server,它的很多功能都可以通过plugin的方式去扩展。
比如:mod_proxy使得apache可以作代理, mod_rewrite使得apache可以实现非常强大的url mapping和rewritting
功能,你是否也想自己来开发一个apache module呢?网上这方面的文章非常的少,而且全是E文,
希望我的这篇文章能够给你一些实质性的帮助。
阅读全文
by linux_prog
Apache是一个非常稳定而且非常open的web server,它的很多功能都可以通过plugin的方式去扩展。
比如:mod_proxy使得apache可以作代理, mod_rewrite使得apache可以实现非常强大的url mapping和rewritting
功能,你是否也想自己来开发一个apache module呢?网上这方面的文章非常的少,而且全是E文,
希望我的这篇文章能够给你一些实质性的帮助。

今年2月2日,国外媒体报道,Google Android平台在2010年第四季度超越nokia Symbian成为全球最大智能手机平台,结束了Symbian引领智能手机市场长达10多年的历史。就这样一款机器人,拯救了moto,巅峰了HTC。android是如何将智能手机市场霸主Symbian一步步拉下神坛,自己又是如何步步为营,转向坐上全球智能手机操作系统的王座,手段和策略值得深思!
android是一款基于Linux内核的操作系统,Google2005年收购android inc.之后,在原有操作系统的基础上采用软件叠层(software stack)的技术架构,分别为基础层,中间层,用户界面和应用层。android诞生之时正是Symbian大行其道之时,作为一款新兴的操作系统,是如何在寡头市场杀出一条血路,android主要祭出了四招,正可谓招招见血,刀刀到肉!
阅读全文
android是一款基于Linux内核的操作系统,Google2005年收购android inc.之后,在原有操作系统的基础上采用软件叠层(software stack)的技术架构,分别为基础层,中间层,用户界面和应用层。android诞生之时正是Symbian大行其道之时,作为一款新兴的操作系统,是如何在寡头市场杀出一条血路,android主要祭出了四招,正可谓招招见血,刀刀到肉!

斯德哥尔摩综合症(Stockholm syndrome),斯德哥尔摩效应,又称斯德哥尔摩症候群或者称为人质情结或人质综合症,是指犯罪的被害者对于犯罪者产生情感,甚至反过来帮助犯罪者的一种情结。这个情感造成被害人对加害人产生好感、依赖心、甚至协助加害于他人。
人质会对劫持者产生一种心理上的依赖感。他们的生死操在劫持者手里,劫持者让他们活下来,他们便不胜感激。他们与劫持者共命运,把劫持者的前途当成自己的前途,把劫持者的安危视为自己的安危。于是,他们采取了“我们反对他们”的态度,把解救者当成了敌人。
据心理学者的研究,情感上会依赖他人且容易受感动的人,若遇到类似的状况,很容易产生斯德哥尔摩综合症。
1973年的斯德哥尔摩银行劫案
1973年8月23日,两名有前科的罪犯Jan Erik Olsson与Clark Olofsson,在意图抢劫瑞典首都斯德哥尔摩市内最大的一家银行失败后,挟持了四位银行职员,在警方与歹徒僵持了130个小时之后,因歹徒放弃而结束。然而这起事件发生后几个月,这四名遭受挟持的银行职员,仍然对绑架他们的人显露出怜悯的情感,他们拒绝在法院指控这些绑匪,甚至还为他们筹措法律辩护的资金,他们都表明并不痛恨歹徒,并表达他们对歹徒非但没有伤害他们却对他们照顾的感激,并对警察采取敌对态度。更甚者,人质中一名女职员Christian竟然还爱上劫匪Olofsson,并与他在服刑期间订婚。 这两名抢匪劫持人质达六天之久,在这期间他们威胁受俘者的性命,但有时也表现出仁慈的一面。在出人意表的心理错综转变下,这四名人质抗拒政府最终营救他们的努力。这件事激发了社会科学家,他们想要了解在掳人者与遭挟持者之间的这份感情结合,到底是发生在这起斯德哥尔摩银行抢案的一宗特例,还是这种情感结合代表了一种普遍的心理反应。而后来的研究显示,这起研究学者称为“斯德哥尔摩症候群”的事件,令人惊讶的普遍。研究者发现到这种症候群的例子见诸于各种不同的经验中,从集中营的囚犯、战俘、受虐妇女与乱伦的受害者,都可能发生斯德哥尔摩综合症经验。以人质为例,如果符合下列条件,任何人都有可能遭受到斯德哥尔摩综合症。 第1,是要你切实感觉到你的生命受到威胁,让你感觉到,至于是不是要发生不一定。然后相信这个施暴的人随时会这么做,是毫不犹豫。 第2,这个施暴的人一定会给你施以小恩小惠,最关键的条件。如在你各种绝望的情况下给你水喝。 第3,除了他给所控制的信息和思想,任何其它信息都不让你得到,完全隔离了。 第4,让你感到无路可逃。 有了这4个条件下,人们就会产生斯德哥尔摩综合症。 警方找来心理学家:三个人质为甚么在最后的性命关头都帮匪徒逃命呢?专家深入研究,结论是:人性能承受的恐惧有一条脆弱的底线。当人遇上了一个凶狂的杀手,杀手不讲理,随时要取他的命,人质就会把生命权渐渐付托给这个凶徒。时间拖久了,人质吃一口饭、喝一口水,每一呼吸,他自己都会觉得是恐怖份子对他的宽忍和慈悲。对於绑架自己的暴徒,他的恐惧,会先转化为对他的感激,然后变为一种崇拜,最后人质也下意识地以为凶徒的安全,就是自己的安全。 这种屈服于暴虐的弱点,就叫“斯德哥尔摩精神症候群”。一九七四年,美国报业大王赫斯特的孙女派翠西亚被美国的“共生解放军”绑架,最后自己宣明加入共生解放军,并参于抢劫银行,一九七五年九月被捕。
人质会对劫持者产生一种心理上的依赖感。他们的生死操在劫持者手里,劫持者让他们活下来,他们便不胜感激。他们与劫持者共命运,把劫持者的前途当成自己的前途,把劫持者的安危视为自己的安危。于是,他们采取了“我们反对他们”的态度,把解救者当成了敌人。
据心理学者的研究,情感上会依赖他人且容易受感动的人,若遇到类似的状况,很容易产生斯德哥尔摩综合症。
1973年的斯德哥尔摩银行劫案
1973年8月23日,两名有前科的罪犯Jan Erik Olsson与Clark Olofsson,在意图抢劫瑞典首都斯德哥尔摩市内最大的一家银行失败后,挟持了四位银行职员,在警方与歹徒僵持了130个小时之后,因歹徒放弃而结束。然而这起事件发生后几个月,这四名遭受挟持的银行职员,仍然对绑架他们的人显露出怜悯的情感,他们拒绝在法院指控这些绑匪,甚至还为他们筹措法律辩护的资金,他们都表明并不痛恨歹徒,并表达他们对歹徒非但没有伤害他们却对他们照顾的感激,并对警察采取敌对态度。更甚者,人质中一名女职员Christian竟然还爱上劫匪Olofsson,并与他在服刑期间订婚。 这两名抢匪劫持人质达六天之久,在这期间他们威胁受俘者的性命,但有时也表现出仁慈的一面。在出人意表的心理错综转变下,这四名人质抗拒政府最终营救他们的努力。这件事激发了社会科学家,他们想要了解在掳人者与遭挟持者之间的这份感情结合,到底是发生在这起斯德哥尔摩银行抢案的一宗特例,还是这种情感结合代表了一种普遍的心理反应。而后来的研究显示,这起研究学者称为“斯德哥尔摩症候群”的事件,令人惊讶的普遍。研究者发现到这种症候群的例子见诸于各种不同的经验中,从集中营的囚犯、战俘、受虐妇女与乱伦的受害者,都可能发生斯德哥尔摩综合症经验。以人质为例,如果符合下列条件,任何人都有可能遭受到斯德哥尔摩综合症。 第1,是要你切实感觉到你的生命受到威胁,让你感觉到,至于是不是要发生不一定。然后相信这个施暴的人随时会这么做,是毫不犹豫。 第2,这个施暴的人一定会给你施以小恩小惠,最关键的条件。如在你各种绝望的情况下给你水喝。 第3,除了他给所控制的信息和思想,任何其它信息都不让你得到,完全隔离了。 第4,让你感到无路可逃。 有了这4个条件下,人们就会产生斯德哥尔摩综合症。 警方找来心理学家:三个人质为甚么在最后的性命关头都帮匪徒逃命呢?专家深入研究,结论是:人性能承受的恐惧有一条脆弱的底线。当人遇上了一个凶狂的杀手,杀手不讲理,随时要取他的命,人质就会把生命权渐渐付托给这个凶徒。时间拖久了,人质吃一口饭、喝一口水,每一呼吸,他自己都会觉得是恐怖份子对他的宽忍和慈悲。对於绑架自己的暴徒,他的恐惧,会先转化为对他的感激,然后变为一种崇拜,最后人质也下意识地以为凶徒的安全,就是自己的安全。 这种屈服于暴虐的弱点,就叫“斯德哥尔摩精神症候群”。一九七四年,美国报业大王赫斯特的孙女派翠西亚被美国的“共生解放军”绑架,最后自己宣明加入共生解放军,并参于抢劫银行,一九七五年九月被捕。
在活动中,有一些功能被一直的访问想捞好处是很多人喜欢干的事,估计是用while(1){不段刷页面,IP不变,通过Apache日志看出来},用程序来实现获取兑换码,邀请好友等,还用多线程,给Apache服务器弄挂了,因为后台用的是直连Mysql,这样频繁是没法让Mysql消停的,这时就可以用这个插件了,其实也可以用Memcache来做到程序里,但我个人觉得这种应该是运维来做的事情,所以,我也想实践一下这个Apache插件的实际效果,乃至于编写Apache插件Etc,做了下测试发现这个mod_evasive20还真有必要给放上去,能避免一些用工具刷分的给把Apache以及后台DB给搞挂了:。
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:
下载文件
主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/mod_evasive 这样就可以了。
========================================================================
我的实践情况,如下:
#wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
vi mod_evasive20.c
/*
#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/
阅读全文
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:

主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/mod_evasive 这样就可以了。
========================================================================
我的实践情况,如下:
#wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
vi mod_evasive20.c
/*
#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/

在Android系统中,自带的闹钟软件自能设定自己默认的铃声作为提示音。要添加自己的铃声,使用闹钟软件是一个方法。但是物尽所用,能用自身软件解决就用自身软件则好。
其实很简单,在SD卡中建立media\audio\ringtones,notifications,alarms三个文件夹就可以添加自己的铃声了。这三个文件夹“ringtones”对应手机铃声;“notification”对应消息提示音(短信铃声);“alarms”即为闹钟铃声。而在这其中的音乐文件不会在播放器中搜索到。
试试吧。
其实很简单,在SD卡中建立media\audio\ringtones,notifications,alarms三个文件夹就可以添加自己的铃声了。这三个文件夹“ringtones”对应手机铃声;“notification”对应消息提示音(短信铃声);“alarms”即为闹钟铃声。而在这其中的音乐文件不会在播放器中搜索到。
试试吧。
问题:rontab里最小的时间单位是分钟,我用*/120,想让每半分钟执行一次,也不行啊。
比如同步:
/data/htdocs/t.jackxiang.com/shell/getNowTempValueFromCom.sh
/usr/bin/php /data/htdocs/t.jackxiang.com/getNowTempValueFromCom.php
简单实现让一个进程去读取串口的操作,这样通过循环读取出来的数据值也就更快更准,否则多个去读容易读乱了,主要是用的while去循环读取这块要是c可能select去操作:
回答:我想应该是不行的,因为 cron 每分钟才读一次配置文件,看哪些命令要执行,精度应该不能再高了。
有没有其他的解决方案:
这种思路挺巧妙的
但为什么不设置成开机后就启动这个脚本,然后在脚本里面控制间隔呢。
换个思路如下:
方法1:
两个脚本
1个正常,一个sleep30
crontab设置同时启动,想到的只有这个办法了
让其中一个脚本睡眠30秒,另一个正常运行
举例
a.sh是你的脚本
再写一个b.sh
内容如下:
sleep 30
a.sh
然后在cron中把这两个脚本都加进去,设置一样的启动条件(分钟是*)
shell知识:
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
方法2:
TenSecend.sh
方法3:
* * * * * cmd
* * * * * (sleep 10 && cmd)
* * * * * (sleep 20 && cmd)
* * * * * (sleep 30 && cmd)
* * * * * (sleep 40 && cmd)
* * * * * (sleep 50 && cmd)
这样就可以了,这是个简单的问题,而我没有在Jackxiang上得到答案,看来绝对是我描述问题的方法有问题. 下次定要记得把问题说清楚,这样各位朋友才好帮到我,呵呵~
你可以不停的使用
at
batch
不过得保证10秒程序执行完。
=====================踩坑记录-crontab每10秒执行一次==================================
写在前面,记录一个linux小白使用crontab中遇到的各种坑及解决思路方法。网上帖子千千万,坑也是千千万。记录下,分享给大家。
需求:linux中使用crontab每十秒执行一次
场景:需要在ubuntu14服务器中使用代理每十秒执行一次curl来访问互联网,来测试代理网络稳定性。
经过网上的大量搜贴之后得到的可用的一个结论如下:
# crontab -e
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
如果你是直接一梭子全复制,改下目录那么恭喜你完成了计划任务。而我就不是了,我只写了sleep 10 这条然后任务没有执行。这就是坑。
坑1 .上面sleep 10 20 30 ...是啥意思啊,怎么个规则啊。一头雾水,当时我是直接把第二个sleep 10 那个定时任务直接粘进去的。然后,任务没有执行就一直纠结任务没有执行这个问题。
坑2.ubuntu系统第一次使用crontab -e 需要选择比编辑器,如果选nano上,对我这种小白可就蒙圈。最后在命令行使用, select-ediort 来选择编辑器选3 vim 就好了
后来,明白后做了实验。
如果只写前两条的话是:在每分钟的第一秒和第一个10秒执行一次
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
以此类推只写前三的话就是:在每分钟的第一、第一个十秒、第二个十秒分别执行一次
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
如果都写上的话就是每十秒执行一次啦,完美过程。
过程遇到的问题(1):crontab -e 完都有新邮件
原因:1.crontab 每次执行完程序产生的输出都会发邮件到/var/mail/root
2.定时任务语法有误,/var/mail/root 发送的是错误日志,如下
root@bogon:/usr/local# tail -20 /var/mail/root
From root@bogon Tue May 21 18:31:11 2019
Return-Path: <root@bogon>
X-Original-To: root
Delivered-To: root@bogon
Received: by bogon (Postfix, from userid 0)
id AAFCB43077; Tue, 21 May 2019 18:31:11 +0800 (CST)
From: root@bogon (Cron Daemon)
To: root@bogon
Subject: Cron <root@bogon> sleep 10; sh /home/liuxin/curl-status.sh >dev/null 2>&1
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20190521103111.AAFCB43077@bogon>
Date: Tue, 21 May 2019 18:31:11 +0800 (CST)
/bin/sh: 1: cannot create dev/null: Directory nonexistent
解决:如果是1的话就放到黑洞 >/dev/null 2>&1
* * * * * /usr/local/cc.sh >/dev/null 2>&1
精讲:1,/dev/null是linux系统的一个垃圾桶(一个不正经的比喻)有不用的输出都可以往里面扔。>/dev/null 缺省默认是1 即 1>/dev/null
2,linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2 2>&1就是把2错误输出重定向到1标准输出 而1又输出到/dev/null黑洞
如果不想输出到一个文件可以这样写
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
过程中遇到的问题(2):如图crontab -e 后是新文件
解决:crontab语法错误再三检查后,建议select-editor 选3 vim
来自:https://mp.weixin.qq.com/s/CoWxVO5wlsJcIhv9a8sdKQ
比如同步:
/data/htdocs/t.jackxiang.com/shell/getNowTempValueFromCom.sh
/usr/bin/php /data/htdocs/t.jackxiang.com/getNowTempValueFromCom.php
简单实现让一个进程去读取串口的操作,这样通过循环读取出来的数据值也就更快更准,否则多个去读容易读乱了,主要是用的while去循环读取这块要是c可能select去操作:
回答:我想应该是不行的,因为 cron 每分钟才读一次配置文件,看哪些命令要执行,精度应该不能再高了。
有没有其他的解决方案:
这种思路挺巧妙的
但为什么不设置成开机后就启动这个脚本,然后在脚本里面控制间隔呢。
换个思路如下:
方法1:
两个脚本
1个正常,一个sleep30
crontab设置同时启动,想到的只有这个办法了
让其中一个脚本睡眠30秒,另一个正常运行
举例
a.sh是你的脚本
再写一个b.sh
内容如下:
sleep 30
a.sh
然后在cron中把这两个脚本都加进去,设置一样的启动条件(分钟是*)
shell知识:
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
方法2:
TenSecend.sh
方法3:
* * * * * cmd
* * * * * (sleep 10 && cmd)
* * * * * (sleep 20 && cmd)
* * * * * (sleep 30 && cmd)
* * * * * (sleep 40 && cmd)
* * * * * (sleep 50 && cmd)
这样就可以了,这是个简单的问题,而我没有在Jackxiang上得到答案,看来绝对是我描述问题的方法有问题. 下次定要记得把问题说清楚,这样各位朋友才好帮到我,呵呵~
你可以不停的使用
at
batch
不过得保证10秒程序执行完。
=====================踩坑记录-crontab每10秒执行一次==================================
写在前面,记录一个linux小白使用crontab中遇到的各种坑及解决思路方法。网上帖子千千万,坑也是千千万。记录下,分享给大家。
需求:linux中使用crontab每十秒执行一次
场景:需要在ubuntu14服务器中使用代理每十秒执行一次curl来访问互联网,来测试代理网络稳定性。
经过网上的大量搜贴之后得到的可用的一个结论如下:
# crontab -e
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
如果你是直接一梭子全复制,改下目录那么恭喜你完成了计划任务。而我就不是了,我只写了sleep 10 这条然后任务没有执行。这就是坑。
坑1 .上面sleep 10 20 30 ...是啥意思啊,怎么个规则啊。一头雾水,当时我是直接把第二个sleep 10 那个定时任务直接粘进去的。然后,任务没有执行就一直纠结任务没有执行这个问题。
坑2.ubuntu系统第一次使用crontab -e 需要选择比编辑器,如果选nano上,对我这种小白可就蒙圈。最后在命令行使用, select-ediort 来选择编辑器选3 vim 就好了
后来,明白后做了实验。
如果只写前两条的话是:在每分钟的第一秒和第一个10秒执行一次
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
以此类推只写前三的话就是:在每分钟的第一、第一个十秒、第二个十秒分别执行一次
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
* * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
如果都写上的话就是每十秒执行一次啦,完美过程。
过程遇到的问题(1):crontab -e 完都有新邮件
原因:1.crontab 每次执行完程序产生的输出都会发邮件到/var/mail/root
2.定时任务语法有误,/var/mail/root 发送的是错误日志,如下
root@bogon:/usr/local# tail -20 /var/mail/root
From root@bogon Tue May 21 18:31:11 2019
Return-Path: <root@bogon>
X-Original-To: root
Delivered-To: root@bogon
Received: by bogon (Postfix, from userid 0)
id AAFCB43077; Tue, 21 May 2019 18:31:11 +0800 (CST)
From: root@bogon (Cron Daemon)
To: root@bogon
Subject: Cron <root@bogon> sleep 10; sh /home/liuxin/curl-status.sh >dev/null 2>&1
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20190521103111.AAFCB43077@bogon>
Date: Tue, 21 May 2019 18:31:11 +0800 (CST)
/bin/sh: 1: cannot create dev/null: Directory nonexistent
解决:如果是1的话就放到黑洞 >/dev/null 2>&1
* * * * * /usr/local/cc.sh >/dev/null 2>&1
精讲:1,/dev/null是linux系统的一个垃圾桶(一个不正经的比喻)有不用的输出都可以往里面扔。>/dev/null 缺省默认是1 即 1>/dev/null
2,linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2 2>&1就是把2错误输出重定向到1标准输出 而1又输出到/dev/null黑洞
如果不想输出到一个文件可以这样写
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
过程中遇到的问题(2):如图crontab -e 后是新文件
解决:crontab语法错误再三检查后,建议select-editor 选3 vim
来自:https://mp.weixin.qq.com/s/CoWxVO5wlsJcIhv9a8sdKQ
mysql消除乱码方法集
我用php+mysql做系统的时候发现数据库的汉字在数据库里是显示正常的,但是一旦数据库与php连接,汉字就会显示为???多个问号,一直都在想办法解决它,但是试了好包括修改php 还有mysql配置文件的默认字体,还有在建html时的字体的设置,但是都不行,今天突然在网上看到有说用 这中方法可以的。1.在使用MySQL和php的时候出现过中文乱码问题
阅读全文
我用php+mysql做系统的时候发现数据库的汉字在数据库里是显示正常的,但是一旦数据库与php连接,汉字就会显示为???多个问号,一直都在想办法解决它,但是试了好包括修改php 还有mysql配置文件的默认字体,还有在建html时的字体的设置,但是都不行,今天突然在网上看到有说用 这中方法可以的。1.在使用MySQL和php的时候出现过中文乱码问题

有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。
阅读全文

实践证明上面这两个都会指向编译时的mysqld.sock文件位置:
php -i|grep mysqld.sock
'--with-mysql-sock=/var/run/myslqd/mysqld.sock'
mysqli.default_socket => /var/run/myslqd/mysqld.sock => /var/run/myslqd/mysqld.sock
pdo_mysql.default_socket => /var/run/myslqd/mysqld.sock => /var/run/myslqd/mysqld.sock
PDO连接Mysql出现如下:Connection failed: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/usr/local/webserver/mysql/data/mysql.sock' (2)
如下命令编译php后,注意其中有一行是涉及到PDO和MysqlLi的--with-pdo-mysql=/usr/local/webserver/mysql
编译PHP:
wget http://cn.php.net/distributions/php-5.3.6.tar.gz
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl
老外这样说的:configure --with-pdo-mysql --with-mysql-sock=/usr/local/webserver/mysql/data/mysql.sock... This value can either be set at compile time if a domain socket is found at configure.
在:--socket=/data0/data/mysql.sock ,这时你一是可以建立软链接
这儿是可以重新编译一次PDO来实现,二是能通过软链接来实现,重新编译PDO如下:
PDO_MYSQL:
http://pecl.php.net/package/PDO_MYSQL
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
make
make install
cd ../
要么你直接在编译PHP源代码时编译进去,这儿单独编译时可能会找不到mysql.h,造成上面一一致的原因是我修改了原来Mysql默认的配置:mysql.sock的Path,同时修改了PHP里的Mysql常规Path,而这个PDO的PAth没有在PHP.ini里体现出来,没法修改,只有建立软链接或者重新编译才行。这就是根本原因。
(1)直接建立软链接指向其位置:ln -s /data0/data/mysql.sock /usr/local/webserver/mysql/data/mysql.sock 立竿见影。
(2)重新编译PDO【注意把:mysql.sock设置一下位置,让PDO知道不是以前的那个位Path了】
(3)这儿发现第三种方法,修改好编译好的二进制so文件:
vi /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so
找到那个写死了的mysql.sock的配置处,把路径给修改下,再修改回去,呵呵,如下:
@^@^@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/usr/local/webserver/mysql/data/mysql.sock^@^@
修改为这样:
@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/data0/data/mysql.sock^@^@/root/jackxiang.com
强制写入,这时,我用的是Nginx下Php的FastCGI,得重启下PHPFastCGI,而要是Apache得重启下Apache即可。
这儿的修改可能有些问题:
root@116.255.139.240:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626# sh /root/runphp.sh
Starting php-fpm /etc/init.d/phpfpm: line 53: 12947 Segmentation fault $php_fpm_BIN $php_opts
failed
但是说明一个问题:这个配置/usr/local/webserver/mysql/data/mysql.sock确实是写死在这个:pdo_mysql.so 文件里的!!!
php -i|grep mysql.sock得到如下两个设置的地方,
mysql.default_socket => /data0/data/mysql.sock => /data0/data/mysql.sock //常规的Mysql的句柄,和下面不一样导致,pdo报错。
MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock //PDO的Mysql句柄
为何这上面两个不一样呢?请查看: php连接到MySQL数据库服务器时三种主要的API:mysql,mysqli,pdo区别及联系
PHP用PDO连接Mysql时出现问题,PHP代码如下:
<?php
$dsn = "mysql:host=localhost;dbname=360syn_mysql";
$db = new PDO($dsn, 'root', '');
root@116.255.139.240:/data0/htdocs/happycun.com# php pdo.php
PHP PDOException: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/usr/local/webserver/mysql/data/mysql.sock' (2) in /data0/htdocs/happycun.com/pdo.php on line 3
也就是这个设置不对:MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock
查看Mysql的mysql.sock是在哪儿?如下命令查看:
ps aux|grep mysql
/usr/local/webserver/mysql/bin/mysqld --basedir=/usr/local/webserver/mysql --datadir=/data0/data --plugin-dir=/usr/local/webserver/mysql/lib/plugin --user=mysql --log-error=/data0/data/error_log/log-error.log --pid-file=/data0/data/localhost.localdomain.pid --socket=/data0/data/mysql.sock --port=3306
是谁不小心把/tmp/mysql.sock删除了,最后建立软连接才好了!
原因:
其本质是在编译Mysql的时候可能此时mysql.sock是在/tmp/mysql.sock,而可能在实际配置Mysql的时候,vi /etc/my.cnf 其定义到了:/usr/local/services/mysql-5.0.2*/var/mysql.sock
---------------------
来源网上:
摘要:解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而php标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: [mysql d] socket=/var/lib/mysql .sock 改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点: [mysql ] socket=/tmp/mysql .sock 或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,这个大家自己去找找 或者用这样的方法: ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock 成功了,就是这样ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock OK!
[mysqld]
socket=/var/lib/mysql.sock
改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点:
[mysql]
socket=/tmp/mysql.sock
或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连:
On my RedHat-Box the socket of mysql is /var/lib/mysql/mysql.sock. In your php.ini you will find a line
mysql.default_socket = /tmp/mysql.sock
change it to
mysql.default_socket = /var/lib/mysql/mysql.sock
Then restart apache and it will work.
---
如果做了软链接依旧连接不上,提示PHP连接mysql找不到'/tmp/mysql.sock,请参阅Mysql绑定端口引发的:ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1':
http://jackxiang.com/post/4305/
MYSQL 5.5 中安装BOBLOG,结果安装到最后一步时,出现SQL语句错误。查看错误发现是BOBLOG使用了SQL语句“TYPE=MYISAM”来设定存储引擎,但是在5.5中这个语句已经不在支持了。
解决方法也很简单,找到install/install.php,把其中的TYPE替换为ENGINE即可。
-------
MYSQL 5.5 已经默认是INNODB,还得注意。
解决方法也很简单,找到install/install.php,把其中的TYPE替换为ENGINE即可。
-------
MYSQL 5.5 已经默认是INNODB,还得注意。