追踪php的执行过程

作者:阿川 发布时间:December 27, 2017 分类:编程开发

ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace

无限遍历多维数组

作者:阿川 发布时间:January 29, 2017 分类:编程开发

$arr/多维不规则数组

function forarr($m){
    foreach ($m as $v) {
        if (is_array($v)) {
            forarr($v);//递归
        } else {
            echo $v ." ";
 
        }
    }
 
 
}
$how=forarr($arr1);
echo $how;

当sql server提示你注册了用户又无法登陆的解决办法

作者:阿川 发布时间:August 10, 2014 分类:编程开发

最近在给客户调试他的程序.发现每次都可以注册成功用户.但是每次都没办法登陆进去.客户代码提示的是注册成功.先去查看数据库,发现数据库里面确实木有用户.于是改配置文件,让这货显示错误信息
在conn.asp中注释掉

On Error Resume Next

添加这货让他显示错误
On Error Goto 0

接着继续注册.提示
Provider 错误 '80020005' 类型不匹配.
显示第regs/regsave.asp中122行有问题.
Rs("daili")    ="0""4"

改成
Rs("daili")    ="4"

继续注册,这会儿提示
请执行 sp_addlinkedserver 将该服务器添加到 sysservers.
原来是计算机名不对..改过来
1:查找老服务器
SELECT @@SERVERNAME

2:修改服务名(现有服务器名一般为计算机名)
EXEC sp_dropserver 原服务器名
EXEC sp_addserver
@server=''现在的服务器名,
@LOCAL = LOCAL

之后重启服务.
接着又提示
SQL Server未将服务器 DBSERVER 配置为用于 DATA ACCESS.
DBSERVER一般也是计算机名.继续sql
USE MASTER;
EXEC sp_serveroption 'DBSERVER', 'data access', 'on';

之后,再注册
又特么提示错误
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e23'

[Microsoft][ODBC SQL Server Driver][SQL Server]此游标不包括正在修改的表,或该表不能通过此游标更新。

这种错误通常是更改了计算机机器名引起的.接着重启机器.记得是重启机器啊啊啊啊重启机器...我特么在这里被玩疯了.一直重启服务,一直提示这玩意错误..最后重启机器后解决..然后再注册.发现注册成功,
接着把reg/regsave.asp中的

Rs("daili")    ="4"

改成
Rs("daili")    ="0""4"

打完收工...一切看起来都是那么正常..

The VDI is not available

作者:阿川 发布时间:September 27, 2012 分类:编程开发

1. 先找到此虚拟机对应的Vbd list

xe vbd-list vm-uuid=1201d1a2-599b-d058-8949-dd6ebb4e3f2b

2. 我们看到此虚拟机对应的VDI的

vdi-UUID=b23b87f3-f6d1-402e-bc19- 1b0f13d7a2e5

3. Detach此VDI

xe vdi-forget uuid=5cc8945e-7ee6-58d1-d2f0-999dcb3b7394

4. 在重新scan此VDI所在的存储

xe sr-scan uuid=04868730-71ab-551f-3fe6-8178a97acb23

5. 将原来的VDI重新挂载到原来的虚拟机

xe vbd-create vdi-uuid=b23b87f3-f6d1-402e-bc19-1b0f13d7a2e5 
vm-uuid=8017032a-7fee-5f77-b1e1-19e82422f924 bootable=true device=0 type=Disk mode=RW

注:将此VDI重新挂载到VM

Bootable=yes:从此VDI启动
    Device=0:第一个磁盘,如果有第二个,过程同上
    Mode=RW:此磁盘可以读写

重新启动虚拟机,可以正常启动

通过伪静态解决中文乱码

作者:阿川 发布时间:June 11, 2012 分类:编程开发

当在网站使用伪静态的时候.显示中文出现乱码.不妨在你的伪静态页面中加上[QSA,NU,PT,L]试试
比如将

RewriteRule ^(.*)$ index.php?$1 [L]

改成
RewriteRule ^(.*)$ index.php?$1 [QSA,NU,PT,L]

试试效果.
主要是NU这个,加上去就不会乱码,但直接显示的中文.

每日备份mysql到网站目录

作者:阿川 发布时间:October 27, 2011 分类:编程开发

今天一客户的VPS被入侵,这位高人直取该客户的数据库.删除数据库后还不算完..还不能让你有喘息的机会,接着拿了一堆文件来反复读写,最后将文件系统破坏的一塌糊涂...阿川和几位朋友整整折腾了24小时未果...再咬牙的同时,做了这么一个备份数据库到网站根目录的脚本,至于你备份数据之后想干嘛......那就是你的事了..比如可以上传到其他的FTP空间,还可以发邮件给你自己,等等.大家举一反三.多多注意安全.以下是脚本内容

#!/bin/bash
MYSQL_USER=数据库用户名
MYSQL_PASS=密码
MYSQL_DATA=用户名
DataBakName=Data_$(date +"%Y%m%d").tar.gz
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz
/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS
 --databases $MYSQL_DATA
 --lock-tables=false > /home/backup/databackup.sql
tar zcf /home/backup/$DataBakName /home/backup/databackup.sql
rm -rf /home/backup/databackup.sql

保存退出
或者直接在你的VPS上执行
wget -c http://down.kiiyi.com/backup.sh

之后,给权限
chmod +x backup.sh

然后,利用系统crontab实现每天自动运行
crontab -e

输入以下内容
00 00 * * * /root/backup.sh

其他的crontab可以参考linux中Cron定时任务系统命令详解

Linux下如何简单的防止CC攻击

作者:阿川 发布时间:September 21, 2011 分类:编程开发

Nginx 0.7开始提供了2个限制用户连接的模块:NginxHttpLimitZoneModule和NginxHttpLimitReqModule。
NginxHttpLimitZoneModule可以根据条件进行并发连接数控制。
NginxHttpLimitReqModule可以根据条件进行请求频率的控制。

http {
limit_zone   my_zone  $binary_remote_addr  10m;
limit_req_zone  $binary_remote_addr  zone=my_req_zone:10m   rate=1r/s;
}
server {
...
location ~ ^/bbs/(index|forumdisplay|viewthread).php$ {
limit_conn   myzone_bbs  3;
limit_req zone=bbs burst=2 nodelay;
...
}

应用这条规则后,bbs目录下的index.php、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。

Linux上iptables防火墙的基本应用教程

作者:阿川 发布时间:September 15, 2011 分类:编程开发

iptables是Linux上常用的防火墙软件,下面vps侦探给大家说一下iptables的安装、清除iptables规则、iptables只开放指定端口、iptables屏蔽指定ip、ip段及解封、删除已添加的iptables规则等iptables的基本应用。
1、安装iptables防火墙

如果没有安装iptables需要先安装,CentOS执行:

yum install iptables

Debian/Ubuntu执行:

apt-get install iptables

2、清除已有iptables规则

iptables -F
iptables -X
iptables -Z

3、开放指定的端口

#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT