作者归档:kevin

CentOS 6.x 上 PHP 5.2 请求https报 segment fault

php调用curl访问https地址时,php-fpm进程crash后重启,nginx报502错误
php-fpm日志报错:

[NOTICE] fpm_got_signal(), line 48: received SIGCHLD
[WARNING] fpm_children_bury(), line 215: child 4270 (pool default) exited on signal 11 SIGSEGV (core dumped) after 1816.499155 seconds from start
[NOTICE] fpm_children_make(), line 352: child 4444 (pool default) started

dmesg报错:

[1125726.463591] php-cgi[4517]: segfault at 8048 ip 000000319301cefc sp 00007ffc8430fac0 error 4 in libsqlite3.so.0.8.6[3193000000+8b000]

复现代码:

$urlEndPoint = "https://www.google.com/search";
$headerArray = array();
$ch = curl_init();
curl_setopt($ch,CURLOPT_POST,true);

curl_setopt($ch,CURLOPT_URL, $urlEndPoint);
/*curl_setopt($ch,CURLOPT_HTTPHEADER, $headerArray);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArray); */

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0');
curl_setopt($ch, CURLOPT_VERBOSE, true);

if (!$result = curl_exec($ch)) {
print (curl_error($ch));
}

curl_close ($ch);

echo print_r($result,true);

复现结果:

[root@172-105-209-168 ~]# php test1.php
* About to connect() to www.google.com port 443 (#0)
* Trying 142.251.42.196... * connected
* Connected to www.google.com (142.251.42.196) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
Segmentation fault (core dumped)

排错后确定,是nss的问题,准确说应该是/etc/pki/nssdb这个数据库文件的问题。

Quick fix: 重装一遍nss
如果在nssdb中有自定义证书,需要先备份

yum -y reinstall nss

CentOS 6 太老了,官方的和很多第三方的yum源已经移除 CentOS 6,需要找个能用的:

https://www.mark-gilbert.co.uk/fixing-yum-repos-on-centos-6-now-its-eol/

Raspberry Pi OS 中给网卡设置静态IP地址的问题,BUG?

通常在linux中给一个网络接口(网卡)设置IP信息,是修改一个以该网络接口名称命名的文件,比如在CentOS中给eth0设置IP信息:

CentOS: /etc/sysconfig/network-scripts/ifcfg-eth0

相对应的Raspberry Pi OS中,也提供了文件:

/etc/network/interfaces
or
/etc/network/interfaces.d/eth0

我有如下配置
/etc/network/interfaces:

source /etc/network/interfaces.d/*

/etc/network/eth0:

auto eth0
allow-hotplug wlan0
iface eth0 inet static
address 192.168.80.100
netmask 255.255.255.0
network 192.168.80.0
gateway 192.168.80.3

重启网络(或系统)使之生效之后,发现一奇怪的问题:

在将eth0设置为静态IP地址192.168.80.100之后,eth0通过DHCP获取到的另一个IP地址192.168.80.4却依然可以ping通,且可以通过SSH连接,但同时ifconfig命令的输出信息中却没有显示192.168.80.4的信息。

显然,DHCP忽略了interfaces文件的设置内容,继续去dhcp服务器获取动态IP地址了。
Google之后,知道此问题2015年即出现了,所以至今问题依旧。解决问题的办法,无非就是两条路:

方法一:用interfaces文件,不用dhcp

1、在interfaces文件中设置静态IP地址信息
2、完全禁用dhcp服务:sudo systemctl disable dhcpcd.service
3、或者修改/etc/dhcpcd.conf文件,添加 denyinterfaces eth0 来让dhcp服务直接忽略eth0设备

方法二:不用interfaces文件,用dhcp

1、清除interfaces文件中的IP地址信息
2、直接在/etc/dhcpcd.conf中设置网络设备的静态IP地址:具体操作可见官方手册

所以,鉴于以上问题,建议在Raspberry Pi OS中给网络设备设置IP地址信息,尽量直接通过配置DHCP来操作。
另外,Raspberry Pi OS是基于Debian的,不知道Debian系的其他系统是不是也会有这个问题,总之Debian系的,忘掉interfaces文件。

参考:https://superuser.com/questions/985082/is-there-a-way-to-disable-the-dhcp-client-in-raspbian-linux-on-a-rasperry-pi

在OpenLDAP中增加生日和性别的schema

新建一个schema文件,或者在随便哪个schema文件中添加如下内容

 attributetype  ( 1.3.6.1.4.1.33592.1.3.5 NAME 'gender'
        EQUALITY integerMatch
        ORDERING integerOrderingMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
        SINGLE-VALUE )
 attributetype  ( 1.3.6.1.4.1.33592.1.3.2 NAME 'birthDate'
           EQUALITY generalizedTimeMatch
           ORDERING generalizedTimeOrderingMatch
           SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
           SINGLE-VALUE )

参考:
http://tools.ietf.org/html/draft-gryphon-ldap-schema-vcard4-00

nginx+lua

1,install lua
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar -zxf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux
make install INSTALL_TOP=/usr/local/lua-5.1.4/

vi /etc/profile
export LUA_LIB=/usr/local/lua-5.1.4/lib
export LUA_INC=/usr/local/lua-5.1.4/include
source /etc/profile

2,install nginx with packages
http://www.nginx.org/download/nginx-0.8.55.tar.gz
https://github.com/agentzh/echo-nginx-module
https://github.com/simpl/ngx_devel_kit
https://github.com/chaoslawful/lua-nginx-module

./configure –prefix=/usr/local/nginx-0.8.55 \
–add-module=../ngx_devel_kit/ \
–add-module=../lua-nginx-module/ \
–add-module=../echo-nginx-module/
make
make install

Firefox Extension: alexaLite

春节期间闲着没事,给自己做了一个查看网站AlexaTrafficRank的Firefox扩展。前两天重新整理了一下,起了个名字叫“alexaLite”,然后扔到AMO上了。让我感到既意外又兴奋的是,通过审批的短短几天,就有上百的下载量了。

这是我在AMO上对这个扩展的介绍:

Simple extension to let you get Alexa infomation of a web site, without install any toolbar.

alexaLite的思路其实是抄的goo.gl这个插件。安装完了以后,只要拖一个按钮到地址栏的旁边就OK了。以后每当你想知道当前正在浏览的这个网站的AlexaTrafficRank时,只需要点一下这个按钮就哦了。从此不再需要仅仅为了想知道一个网站的排名而跑到alexa去查,或者安装什么乱七八糟的重量级的工具条了,生活本应该就是如此简单的~right ?

为了避免更换API地址时重写这个扩展(只需修改GAE端),也为了避免因为使用这个小玩意而为网站的排名添砖加瓦,我在GAE上为Alexa的API增加了一层代理 => http://alexa-api.appspot.com/ 。返回的数据格式是JSON的,参数url可以是“URL地址”也可以是“域名”。如:

http://alexa-api.appspot.com/?url=9511.net

http://alexa-api.appspot.com/?url=http://kevin.9511.net/

alexaLite的下载安装的地址在:http://addons.mozilla.org/addon/142502 欢迎使用并拍砖:P

互联网行业注定是弱势群体

李彦宏的博客看到的,看完之后,只有一声叹息。悄悄的转载,呐喊的不要。

互联网,据说是唯一一个在国内市场打败了所有气势汹汹的国际寡头同行的中国产业;互联网,据说是一个曾经完全靠一批有梦想的人用规范的民营资本运作起来如 今正在国进民退的朝阳产业;移动互联网,据说是中国目前真正可以和世界基本同步的新兴战略产业。但是,在中国最高级别的决策会议上,却没有一个人愿意振臂 高呼,或者哪怕是敢于提一两个句子来呐喊。

原文地址:http://mrpad.blog.sohu.com/145352885.html

玛丽和马克思

很久没写点字了,工作乱七八糟,生活杂乱无章,也实在没什么好写的。今夜本来是要早睡,关机前发现昨天开始下载的《玛丽和马克思》已经完成。于是乎,伴着烟盒里仅有的4根将军和半杯浓茶,就这么看完了。

这是一部没有震撼的特效、没有曲折的情节、没有大规模的宣传、制作简陋到极点的独立动画电影。正是这样一部起初看的我有点昏昏欲睡的动画,在豆瓣上拿到了少有的9分(阿凡达也不过才9.1分)。更让人动容的是,这片子改编自一个真实的故事。甚至字母翻译者在片尾都额外加上了一句“谨以虔诚之心翻译本片字幕献给过去现在未来的所有朋友”。

看片子的过程中不止一次的发现其实自己有时候很像Max。正当我在笨拙的试图组织一些文字去表达我现在的心情时,看到了豆瓣上的这篇评论,且与我的感觉如此的想象。摘抄两段,以表我意。

看到他坐在打字机前面认真的敲打的每一个字,那些单调而寂静的场景是多么的熟悉。大部分时间,我就是这样度过,或者说,即使有很多人在身边,我也常常会有一种很安静的感觉,似乎只能听到那些声音的频率而已。我仿佛看到我自己,丑陋,肥胖,懒惰,懦弱,却渴望美好,勇敢与坚强。而同时Max又是那样的可爱, 他会发明属于自己的词confuzzled,他会给市长写信,他的内心深处有着多么可爱而顽皮的一面啊。但是同时,他不断的在数有几根烟头。我一直觉得, 当有一天你觉得生活不再精彩的时候,就会开始计算身边的一切,就如同睡不着数羊一样,这只是一种让自己坚持下去的办法。那些一个人寂寞的夜晚,如果是日久 天长的话,一定会吞没心中的信念。

我想我之所以像Max一样也如此的焦虑与厌烦多半是出于对于自己的失望。我们都曾经因为自己的小智慧而得意洋洋。但当我走过青少年时代,发现自己并没有变得好看,也没有很有钱之后,我并非自愿但是毫无选择的接受了“我并不完美”的这个事实。我无法跟任何一个人很自然的在生活中谈起这些事情,因为这些心底的 痛苦似乎并不适合作为日常交谈的内容。我每天都如此深刻地感受着自己的不完美,却无能为力。我发现原来我可以成为任何样子,却不可能成为我所期待的那样 子。就像Max所说的那样,when i was young, I want to be anybody but myself。似乎如果有一天我真地对自己彻底失望了,我也会开始和Max一样过上单调的生活,因为如果无法成为最完美的样子,其他的一切都并没有什么区 别了。如果我不能像Max一样遇到Mary,我宁愿一个人静静地在某个清晨离开。也许人生不过就是这样。