Skip to content


curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in

当系统开启safe_mode和 open_basedir,在程序中使用以下语句
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
并且遇到301,302状态吗时会出现错误

[11-Oct-2010 14:17:41] PHP Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in msn.class.php on line 819

解决方法是在curl语句用不使用curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true),在php函数中自定义一个函数

curl_redir_exec函数
curl_redir_exec

curl_redir_exec($ch)替换curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)语句

参考:

http://spoint.babyshoot.cn/archives/2009/11/curlopt-php.html
http://www.php.net/manual/en/function.curl-setopt.php

Posted in PHP, 技术.

Tagged with , .


FireFox 3.6与discuz7.2 兼容问题

当firefox升级到3.6时,论坛登录框的不能显示,发贴时不能勾选源码按钮. 

编辑include/js/common.js


BROWSER.firefox = document.getBoxObjectFor &&  USERAGENT.indexOf(‘firefox’) != -1 && USERAGENT.substr(USERAGENT.indexOf(‘firefox’) + 8, 3);

去掉
document.getBoxObjectFor && 

保存,然后到后台更新缓存.

参考:
http://www.discuz.net/thread-1553662-1-1.html
http://www.discuz.net/thread-1553664-1-1.html

Posted in Discuz/Uchome/Ucenter, 其它.

Tagged with , .


备份时内核出错Unable to handle kernel NULL pointer dereference at virtual address

备份十几万图片文件时碰到内核出错,reboot等命令也无法重启。

重启后再试还是出错。

<coolcode>

SELinux: initialized (dev rpc_pipefs, type rpc_pipefs), uses genfs_contexts
Losing some ticks… checking if CPU frequency changed.
Unable to handle kernel NULL pointer dereference at virtual address 000000f8
 printing eip:
c02c4ecb
*pde = 00004001
Oops: 0000 [#1]
SMP
Modules linked in: autofs4 sunrpc ipt_state iptable_filter iptable_nat ip_conntrack iptable_mangle ip_tables dm_mod button battery ac uhci_hcd ehci_hcd tg3 floppy ext3 jbd ata_piix libata aic79xx sd_mod scsi_mod
CPU:    1
EIP:    0060:[<c02c4ecb>]    Not tainted VLI
EFLAGS: 00010046   (2.6.9-5.ELsmp)
EIP is at _spin_lock_irqsave+0x7/0x45
eax: 000000f4   ebx: 00000246   ecx: c2024d60   edx: 00000200
esi: 000000f4   edi: 00000283   ebp: f7fecf68   esp: f7fecf50
ds: 007b   es: 007b   ss: 0068
Process khelper (pid: 14, threadinfo=f7fec000 task=f7f67230)
Stack: 000000f0 000000f4 c011cfa7 e191be40 e191be44 00000283 f7eb2000 c012e837
       e191be80 c012e498 ffffffff ffffffff 00000001 00000000 c011ce93 00010000
       00000000 c0400e20 c201cd60 00000000 00000000 f7f67230 c011ce93 00100100
Call Trace:
 [<c011cfa7>] complete+0x12/0x3d
 [<c012e837>] worker_thread+0x168/0x1d5
 [<c012e498>] __call_usermodehelper+0x0/0x41
 [<c011ce93>] default_wake_function+0x0/0xc
 [<c011ce93>] default_wake_function+0x0/0xc
 [<c012e6cf>] worker_thread+0x0/0x1d5
 [<c0131dcd>] kthread+0x73/0x9b
 [<c0131d5a>] kthread+0x0/0x9b
 [<c01041f1>] kernel_thread_helper+0x5/0xb
Code: 6c 00 6c 74 2d c0 0f b6 02 84 c0 7e 08 0f 0b 6d 00 6c 74 2d c0 86 0a c3 f0 81 00 00 00 00 01 c3 f0 ff 00 c3 56 89 c6 53 9c 5b fa <81> 78 04 ad 4e ad de 74 18 ff 74 24 08 68 5f 83 2d c0 e8 24 bd
</coolcode>

Posted in 备份, 技术.

Tagged with , , .


网站服务器所使用的各 Linux 发行版统计数据对比分析

网站服务器所使用的各 Linux 发行版统计数据对比分析:
CentOS 增长最快,Debain 平稳发展,Ubuntu 稍有提升
Red Hat和Fedora略有下降

 

Historical trends in the usage of Linux versions for websites

This report shows the historical trends in the usage of Linux versions since October 2009.

  2009
1 Oct
2009
1 Nov
2009
1 Dec
2010
1 Jan
2010
1 Feb
2010
1 Mar
2010
1 Apr
2010
1 May
2010
1 Jun
2010
1 Jul
2010
1 Aug
2010
1 Sep
2010
3 Sep
CentOS 23.4% 22.0% 21.6% 22.1% 22.8% 23.5% 24.9% 25.8% 27.5% 29.9% 31.8% 33.3% 33.4%
Debian 26.5% 28.0% 28.5% 28.6% 28.4% 28.3% 28.1% 28.1% 27.7% 27.0% 26.5% 26.0% 26.0%
Red Hat 21.0% 21.4% 21.7% 21.5% 21.1% 20.6% 19.7% 19.2% 18.4% 17.5% 16.7% 16.1% 16.1%
Ubuntu 8.8% 8.7% 8.8% 9.0% 9.2% 9.5% 9.8% 9.9% 10.0% 10.1% 10.1% 10.2% 10.2%
Fedora 11.3% 11.0% 10.7% 10.3% 10.0% 9.7% 9.2% 8.9% 8.6% 8.1% 7.8% 7.5% 7.4%
SuSE 6.2% 6.1% 6.0% 5.9% 5.6% 5.6% 5.3% 5.3% 5.1% 4.8% 4.6% 4.5% 4.5%
Gentoo 2.6% 2.5% 2.5% 2.5% 2.5% 2.5% 2.5% 2.4% 2.4% 2.3% 2.2% 2.2% 2.1%
Mandriva 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2%
Turbolinux         0.1% 0.1% 0.2% 0.2% 0.2% 0.1% 0.1% 0.1% 0.1%

The diagram shows only Linux versions with more than 1% usage.

Historical trends in the usage of Linux versions

来源:

http://w3techs.com/technologies/history_details/os-linux

Posted in LINUX, 技术.

Tagged with , .


cacti 监控 postfix mail server

1.下载 postfix_mailserver.tar.gz
http://forums.cacti.net/download.php?id=4091
#wget http://forums.cacti.net/download.php?id=4091

2.解压得到两个文件
#tar zxvf postfix_mailserver.tar.gz
cacti_host_template_postfix_mailserver.xml
fetch_mail_statistics.pl

3.测试程序文件
#chmod 0775 fetch_mail_statistics.pl
#cp fetch_mail_statistics.pl /usr/local/postfix/libexec/
#cd !$

/var/log/maillog 为mail日志文件
/var/log/mailstats.db 为程序存放的数据文件
1.3.6.1.4.1.2021.255 为snmp用的oid

#./fetch_mail_statistics.pl /var/log/maillog /var/log/mailstats.db .1.3.6.1.4.1.2021.255 -n .1.3.6.1.4.1.2021.255
.1.3.6.1.4.1.2021.255.0
integer
3

有数字输出就是正确了

4.安装配置snmp
snmp的安装和基本配置参考

#vi /usr/local/etc/snmp/snmpd.conf
#或者这个位置vi /etc/snmp/snmp.conf

com2sec local localhost c1gprivate
group MyROGroup v1 local
group MyROGroup v2c local
view all included .1 80
access MyROGroup “” any noauth exact all none none
#postfix
pass .1.3.6.1.4.1.2021.255 /usr/local/postfix/libexec/fetch_mail_statistics.pl /var/log/maillog /var/log/mailstats.db .1.3.6.1.4.1.2021.255

重启snmp

5.snmpwalk测试
#snmpwalk -v 1 -c c1gprivate localhost .1.3.6.1.4.1.2021.255

UCD-SNMP-MIB::ucdavis.255.0 = INTEGER: 3
UCD-SNMP-MIB::ucdavis.255.1 = INTEGER: 2
UCD-SNMP-MIB::ucdavis.255.2 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.3 = INTEGER: 2
UCD-SNMP-MIB::ucdavis.255.4 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.255.5 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.6 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.7 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.8 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.9 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.255.10 = INTEGER: 0

#snmpwalk -v 2c -c c1gprivate localhost .1.3.6.1.4.1.2021.255.0

UCD-SNMP-MIB::ucdavis.255.0 = INTEGER: 3

出现下面错误请再检查snmpd.conf

#snmpwalk -v 1 -c c1gprivate localhost .1.3.6.1.4.1.2021.255.0
End of MIB

#snmpwalk -v2c -c c1gprivate localhost .1.3.6.1.4.1.2021.255.1
UCD-SNMP-MIB::ucdavis.255.1 = No more variables left in this MIB View (It is past the end of the MIB tree)

6.cacti导入postfix模板
在cacti控制后台
Console -> Import Templates
导入cacti_host_template_postfix_mailserver.xml
在Console -> Host Templates
可以看到名为”Postfix Mailserver”的模板

7.创建postfix的监控图像
Console -> Devices
选择被控监的服务器,在”Associated Graph Templates”中添加”ucd/net – Postfix – Mail Transporting ”
Console -> Create New Graphs
选择被控监的服务器,勾选”Create: ucd/net – Postfix – Mail Transporting”并保存
Console -> Graph Management 稍后就可以看到图像
cacti_postfix_mail_transporting_graph

其它注意项
1.检查 iptables 是否允许snmp 数据包通过
2.请关闭 selinux (RHEL和centos 会出现这个问题)

参考:
http://forums.cacti.net/about6657-0-asc-0.html
http://dev.firnow.com/course/6_system/linux/Linuxjs/2008618/126258.html

Posted in Cacti, 技术.

Tagged with , , .


RedHat AS4 使用centos源 安装yum

RedHat AS4 安装yum

下载rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/yum-2.4.3-4.el4.centos.noarch.rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/python-elementtree-1.2.6-5.el4.centos.i386.rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/sqlite-3.3.6-2.i386.rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/python-sqlite-1.1.7-1.2.1.i386.rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/python-urlgrabber-2.9.8-2.noarch.rpm
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/yum-metadata-parser-1.0-8.el4.centos.i386.rpm
ftp://ftp.isu.edu.tw/pub/Linux/CentOS/4.8/os/s390/CentOS/RPMS/centos-yumconf-4-4.5.noarch.rpm

安装yum
rpm -ivh centos-yumconf-4-4.5.noarch.rpm
rpm -ivh sqlite-3.3.6-2.i386.rpm
rpm -ivh python-sqlite-1.1.7-1.2.1.i386.rpm
rpm -ivh python-urlgrabber-2.9.8-2.noarch.rpm
rpm -ivh python-elementtree-1.2.6-5.el4.centos.i386.rpm
rpm -ivh yum-metadata-parser-1.0-8.el4.centos.i386.rpm
rpm -ivh yum-2.4.3-4.el4.centos.noarch.rpm

配置yum
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
mv CentOS-Base.repo{1,.bak}
vi CentOS-Base-163.repo
把$releasever替换成4
按esc再输入进行替换
:1,$s#\$releasever#4/g
保存退出

yum clean all
yum list

Posted in linux 维护优化, 技术.

Tagged with , , .


linux文字终端下的俄罗斯方块游戏

tetrislogo
http://victornils.net/tetris/

linux文字终端下的俄罗斯方块游戏
支持单人,双人及网络对战。

游戏截图
vitetris050-brackets

双人对战截图
vitetris040-unsock5-sm

下载安装
wget http://victornils.net/tetris/vitetris-0.57.tar.gz
tar zxvf vitetris-0.57.tar.gz
cd vitetris-0.57
./configure –prefix=/opt/gamevitetris
make
make install
/opt/gamevitetris/bin/tetris

游戏开始的界面

# # # # # # # # # # # # #
# ## # # # #
# # # # # # # #

1-Player Game vitetris 0.57
2-Player Game
Netplay Written by
Mode [A-type] Victor Nilsson
————- 2007-2009
Options
Highscores

Posted in Linux游戏.

Tagged with , , .


ssh连接时清除终端shell乱码方法

当用cat或tail命令显示一个二进制文件后终端可能会变成乱码

解决方法:

1.输入clean命令或按ctrl+L

2.输入reset命令

3.按ctrl+v再按ctrl+o 会出现个^O再按回车
ctrl+v 表示下一输入为特殊字符
ctrl+o 表示^O 切换为原来字符集

参考:
http://www.cyut.edu.tw/~ckhung/b/mi/textmode.php

Posted in linux 维护优化, 技术.

Tagged with .


nagios 使用check_file.pl 检查服务是否运行

服务运行时通常会产生个pid文件,我们可以检查这个文件是否存在来简单判定服务是否在运行。

http://exchange.nagios.org/directory/Plugins/Uncategorized/Operating-Systems/Linux/checkfile/details

check_file.pl

#!/usr/bin/perl -w

############################## check_file.pl ##############
# Version : 0.1
# Date : Oct 15 2007
# Author : Samuel Mutel
# Licence : GPL – http://www.fsf.org/licenses/gpl.txt
###########################################################

use strict;
use Getopt::Long;

my $Version=’0.1′;
my %ERRORS=(‘OK’=>0,’WARNING’=>1,’CRITICAL’=>2,’UNKNOWN’=>3,’DEPENDENT’=>4);

my $o_help=undef; # wan’t some help ?
my $o_version=undef; # print version
my $o_exist=undef; # Check if file exist
my $o_nexist=undef; # Check if a file doesn’t exist
my $o_empty=undef; # Check if a file is empty
my $o_nempty=undef; # Check if a file is not empty
my $o_paramok=undef;

sub print_version {
print “check_file version : $Version\n”;
}

sub print_usage {
print “Usage: check_file.pl [-v] [-h] [-e|-n|-m|-t] \n”;
}

sub print_help {
print “\nNagios Plugin to check if a file exist/doesn’t exist.\n”;
print “It check too if a file is empty or not.\n\n”;
print_usage();
print < \$o_help, ‘help’ => \$o_help,
‘v’ => \$o_version, ‘version’ => \$o_version,
‘e’ => \$o_exist, ‘exist’ => \$o_exist,
‘n’ => \$o_nexist, ‘nexist’ => \$o_nexist,
‘m’ => \$o_empty, ’empty’ => \$o_empty,
‘t’ => \$o_nempty, ‘nempty’ => \$o_nempty,
);

if (defined ($o_help)) { print_help(); exit $ERRORS{“UNKNOWN”}};
if (defined ($o_version)) { print_version(); exit $ERRORS{“UNKNOWN”}};
if (!defined ($o_exist) && !defined ($o_nexist) && !defined ($o_empty) && !defined ($o_nempty)) { print_usage(); exit $ERRORS{“UNKNOWN”}};;
}

###### MAIN ######

check_options();

if (@ARGV != 1) {
print_usage();
exit $ERRORS{“UNKNOWN”};
}

my $file = $ARGV[0];

if (defined ($o_exist)) {
if (-e $file) {
print “File ” . $file . ” exist.”;
exit $ERRORS{“OK”}
}
else {
print “File ” . $file . ” does not exist.”;
exit $ERRORS{“CRITICAL”}
}
}

if (defined ($o_nexist)) {
if (! -e $file) {
print “File ” . $file . ” does not exist.”;
exit $ERRORS{“OK”}
}
else {
print “File ” . $file . ” exist.”;
exit $ERRORS{“CRITICAL”}
}
}

if (defined ($o_empty)) {
if (! -s $file) {
print “File ” . $file . ” is empty.”;
exit $ERRORS{“OK”}
}
else {
print “File ” . $file . ” is not empty.”;
exit $ERRORS{“CRITICAL”}
}
}

if (defined ($o_nempty)) {
if (-s $file) {
print “File ” . $file . ” is not empty.”;
exit $ERRORS{“OK”}
}
else {
print “File ” . $file . ” is empty.”;
exit $ERRORS{“CRITICAL”}
}
}

在被监控机上
wget http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=1094&cf_id=24

mv check_file.pl /usr/local/nagios/libexec/
cd !$
chown nagios:nagios check_file.pl
chmod 0775 check_file.pl

#在nrpe.cfg中增加

command[check_msnbot]=/usr/local/nagios/libexec/check_file.pl -e /opt/lampp/htdocs/msnbot/log/msnbot.pid

#重启nrpe
ps aux|grep nrpe
kill $pid
sudo -u nagios /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

在监控机上
在需要监控的服务器配置文件中增加

define service{
use local-service ; Name of service template to use
host_name c1gserver
service_description msnbot
check_command check_nrpe!check_msnbot
notifications_enabled 1
}

重启nagios服务后就可以看到了

service nagios reload

Posted in Nagios, 技术.

Tagged with , .


世界海底光缆分布图

底光缆是国际互联网的骨架。光缆的多少,代表一国与互联网的联系是否紧密。

有人利用微软的Bing地图,以及wikipedia的数据,做出了一幅互动式的世界海底光缆分布图。真是厉害啊。

idc1
我见过的这类地图中,它是最好用的一个。

从地图上可以看到,中国大陆的海底光缆连接点只有三个,因此非常容易对出入境的信息进行控制。

idc2

第一个是青岛(2条光缆)。

idc3

第二个是上海(6条光缆)。

id4

第三个是汕头(3条光缆)。

idc5

由于光缆之间存在重合,所以实际上,中国大陆与Internet的所有通道,就是3个入口6条光缆。

1. APCN2(亚太二号)海底光缆

带宽:2.56Tbps

长度:19000km

经过地区:中国大陆、香港、台湾、日本、韩国、马来西亚、菲律宾。

入境地点:汕头,上海。

网址:http://en.wikipedia.org/wiki/APCN_2_(cable_system)

idc6

2. CUCN(中美)海底光缆

带宽:2.2Tbps

长度:30000km

经过地区:中国大陆,台湾,日本,韩国,美国。

入境地点:汕头,上海。

网址:http://en.wikipedia.org/wiki/CUCN_(cable_system)

idc7

3. SEA-ME-WE 3(亚欧)海底光缆

带宽:960Gbps

长度:39000km

经过地区:东亚,东南亚,中东,西欧。

入境地点:汕头,上海。

网址:http://en.wikipedia.org/wiki/SEA-ME-WE_3

idc8

4. EAC-C2C海底光缆

带宽:10.24Tbps

长度:36800km

经过地区:亚太地区

入境地点:上海,青岛

网址:http://en.wikipedia.org/wiki/C2C_(cable_system)

idc9

5. FLAG海底光缆

带宽:10Gbps

长度:27000km

经过地区:西欧,中东,南亚,东亚

入境地点:上海

网址:
http://en.wikipedia.org/wiki/Fiber-Optic_Link_Around_the_Globe

idc10

6. Trans-Pacific Express(TPE,泛太平洋)海底光缆

带宽:5.12Tbps

长度:17700km

经过地区:中国大陆,台湾,韩国,美国

入境地点:上海,青岛

网址:http://en.wikipedia.org/wiki/TPE_(cable_system)

idc11

作为比较,台湾有9条光缆,香港和韩国各有11条光缆,而日本至少有11个入口15条光缆。

来源:阮一峰

Posted in IDC, 其它.

Tagged with , .