Linux PHP扩展开发

http://www.walu.cc/phpbook

#cd ~/soft/
#wget http://cn.php.net/distributions/php-5.4.0.tar.gz   //下载php原码包
#tar -xvf php-5.4.0.tar.gz
#cd ext/
#./ext_skel --extname=sun    //添加一个扩展,运行完成后会生成一个目录sun
#cd sun
#vim config.m4   //编辑vim config.m4文件
//将下面内容将前面的dnl去掉
PHP_ARG_ENABLE(sun, whether to enable sun support,
[ --enable-sun         Enable sun support])

//编辑vi php_sun.h文件
vim php_sun.h

找到:PHP_FUNCTION(confirm_sun_compiled); ,新增一行:
PHP_FUNCTION(test); 

vi sun.c
数组里增加我们的函数,找到 zend_function_entry sun_functions[],增加:
PHP_FE(test, NULL)
{NULL, NULL, NULL}

再到 sun.c 文件最后面增加如下代码:
PHP_FUNCTION(test)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
       return;
    }

    len = spprintf(&strg, 0, "Your input string: %s\n", arg);
    RETURN_STRINGL(strg, len, 0);
}

#phpize
#./configure
#make
#sudo make install

//进入/etc/php5/apache2/conf.d/  目录
//创建文件  sun.ini
#vim sun.ini   //写入以下内容
extension=sun.so 

//重新启动apache2
#sudo /etc/init.d/apache2 restart

方法创建成功了,你在php中运行
<?php
 echo test("Hello World");
?>

恢复reset删除的提交

└──> git reflog 
dedb3dc HEAD@{4}: checkout: moving from master to dedb3dc63f413ed6eeba8082b7e93ad136b16d0d^0
a5c8652 HEAD@{5}: commit: my push
73a0325 HEAD@{6}: HEAD^: updating HEAD
4b19d45 HEAD@{7}: HEAD~1: updating HEAD
git reset HEAD@{7}   //恢复到{7}
git rebase 73a0325   //恢复到哈希值为73a0325

服务器搭建一个网站的GIT

在服务器上建立一个git空仓库

# mkdir -p /var/repos/my.git     //创建git目录
# cd /var/repos/my.git
# git init --bare               //创建一个空仓库
# cd hooks
# vim post-receive              //创建钩子文件

写入以下内容 /var/www/mysite 你的网站目录

#!/bin/sh
GIT_WORK_TREE=/var/www/mysite/ git checkout -f

还要给钩子文件加上执行权限

# chmod +x post-receive

Js数组创建

//声明一个数组
var array = new Array();	

//创建一个数组
var array = [];

//创建数组元素
array[0] = 'zhouitpro';
array[1] = '19';

//创建字符串下标

array['name'] = 'zhouitpro';
array['age'] = 19;
alert(array['name']);

//输出数组长度
alert(array.length);

js对象基本使用

	//创建一个对象
	var box = new Object();
	box.name="zhouitpro";  //属性创建
	box.age = 19;
	
	//创建对象2,可以去掉new 也是可以的
	var box = Object();
	
	//创建对象3
	var box = {};
	
	box.name = "zhouitpro"
	
	//对象方式输出
	alert(box.name);
	
	//数组方式输出
	alert(box['name']);
	
	//创建对象方法
	box.run = function(){
		return 'run';
	}
	
	//删除属性
	delete box.name;
	
	//判断属性是否存在
	if(box.name != undefined){
		alert(box.name);
	}

Ubuntu配置pptp Vpn

1.安装

apt-get install pptpd pptp-linux ppp

2.编辑/etc/ppp/pptpd-options

name pptpd
#refuse-pap
#refuse-chap
#refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
ms-dns 8.8.8.8
ms-dns 4.4.4.4

3.编辑/etc/pptpd.conf

option /etc/ppp/pptpd-options
localip 192.168.0.1
remoteip 192.168.0.2-245

4.添加vpn用户,编辑/etc/ppp/chap-secrets

# client        server  secret     IP addresses
netcec1  pptpd   123456    *
netcec2  pptpd   123456    *
netcec3  pptpd   123456    *
netcec4  pptpd   123456    *
netcec5  pptpd   123456    *

5.编辑/etc/sysctl.conf
找到net.ipv4.ip_forward=1 把前面的#去掉

sysctl -p

6.防火墙

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.pptp