1. php-mysqli默认是安装完php-fpm就带有的,但是,需要自行在php.ini中的extension中把mysqli的注释去掉。其它的模块也注意要相应的作出修改,有些模块可能也需要使用pacman来安装;
2. php中注意要设置open_basedir变量,加上’./:’

安装cygwin
1、首先需要下载cygwin,访问http://cygwin.org下载到setup.exe
2、双击setup.exe安装cygwin,注意选择网易的镜像:http://mirrors.163.com/cygwin
3、安装必须的组件,比如:libtool, cmake, make, openssh, vim, git等

安装nginx
4、从nginx的主页下载最新版本的nginx:http://nginx.org
5、使用命令tar xf nginx.tar.gz解压缩到当前目录下
6、使用./configure, make, make install安装

安装mysql
7、从mysql的主页下载最新版本的mysql源代码(选择linux source):http://mysql.org
8、解压缩至当前目录中tar xf mysql.tar.gz
9、mysql的源代码有个问题,就是dtoa的函数与系统中的dtoa函数重名,这里需要修改strings/dtoa.c文件,将所有的dtoa替换成为dtoa2(或者自己定个名称)
10、使用make bld, cd bld, cmake ..来配置mysql
11、使用make, make install来编译和安装mysql

安装php
12、从php的主页上下载最新版本的php源代码:http://php.net
13、解压缩至当前目录中tar xf php.tar.gz
14、配置php使用命令:./configure –enable-fpm –with-zlib –with-gd –enable-zip –with-mcrypt –with-mysql=/usr/local/mysql –without-iconv –disable-phar –without-pear
15、编译并且安装:make, make install
16、注意,因为使用了gd等扩展功能,所以需要运行cygwin的setup.exe来安装相应的包,比如:libjpeg, libpng, libxpm, libmcrypt等

小结
全部安装完成需要一些时间,其中可能有一些库是需要在cygwin的setup.exe中安装的,具体的信息在使用configure脚本进行配置的时候,会检查,若配置未通过,查看相应的提示信息应该可以知道需要安装哪些的包,其中比较折腾人的是mysql的编译,使用cmake来配置,因为从来没有用过cmake,花了些时间,另外,strings/dtoa.c文件中的静态dtoa函数与C系统文件库的dtoa函数重名,所以需要将该文件中的所有dtoa修改成为dtoa2或者其它的名称,才可以顺利的编译。php的编译相对简单,只是要记得不要使用iconv这个库,因为好像cygwin下该库有少许问题。不管怎么样,在windows下配置出一个准linux系统会方便远程的维护操作(不再需要使用远程桌面这种极其不安全和没有效率的东西来管理服务器),另外,若舍不得微软的开发环境,却又希望使用linux的服务器管理方式,可以试试cygwin,虽然个人觉得还是比较简陋,不过,应该也可以用于普通的生产环境了。

备注
在运行/usr/local/sbin/php-fpm.exe时,会提示无法找到cygmysqlclient-18.dll,这时使用ln -s /usr/local/mysql/lib/cygmysqlclient-18.dll cygmysqlclient-18.dll做一个symbol-link到/usr/local/sbin目录下就可以了。

1. MySQL备份使用–default-character-set=utf8来指定输出的字符集为utf8,否则在数据中有中文的数据就会出现编码问题

mysqldump -uroot -p[password] -A --default-character-set=utf8 > mysql-backup.sql

2. 如果忘记了root密码,则需要在my.cnf配置文件中的[mysqld]组里增加skip-grant-tables来跳过用户权限表,此时重新启动mysql服务后,root密码为空,再次使用以下语句来修改root密码(在密码修改完成后,记得把该设置语句去掉后再重启mysql服务)

UPDATE USER SET password = password('密码') WHERE USER = 'root'

3. 使用Grant命令来增加新的用户,可以设置该用户可访问的数据库。格式如下:

GRANT ALL ON [dbname].[tablename] TO username@localhost(OR %) IDENTIFIED BY '密码'

4. 当权限设置完成后,执行下面的SQL来刷新权限信息

FLUSH privileges

5. 如果需要指定用户可以远程访问,则需要在grant命令的时候使用’username’@’%’而不是username@localhost,另外,在my.cnf(或my.ini在WINDOWS下)里的[mysqld]段中,增加bind-address=0.0.0.0,若有bind-address=127.0.0.1则需要修改成为0.0.0.0,否则mysql服务只侦听本机的连接
6. 若在连接的时候出现Can’t get host name for your address,则需要在[mysqld]中增加skip-name-resolve

1. 使用以下两句可以打开错误显示

error_reporting(E_ALL);
ini_set("display_errors", 1);

2. 使用日期函数前,要记得设置当前的time zone

date_default_timezone_set('Asia/Chongqing');

3. 使用以下语句可以设置MySQL是否自动使用事务提交,0为否,1为自动提交。如果在程序中需要使用事务处理,那么则需要把该变量设置为0,不需要自动提交事务。然后可以使用’begin’, ‘commit’, ‘rollback’来控制事务的进行。

mysql_query('set autocommit = 0');

使用mysql_init后,如果需要使用中文,则需要马上调用

mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gb2312");

来设置客户端的字符集。在表与数据库中的字段,默认使用”utf8_unicode_ci”即可。