微信支付开发的坑集

最近的产品中使用到了微信支付,微信支付本身的功能做得非常方便,但是在调用其的开放平台接口的过程中,却发现微信负责这个支付接口开发的哥们非常不负责任,开发过程中被若干个坑狠狠的坑了一下,现简单罗列2个。

1、如果在开发过程中,在调用sendReq后没有任何反应,并没有按照官方文档的说明会回调到OnResp中,并且返回值是false,那十有八九是因为你的测试机器上没有按照微信,我们的开发小伙被这个坑苦了。

2、顺利的调用到了OnResp中,但是微信的返回code总是-1,根据官方文档是支付失败,可能原因很多种,appid不合理等等,但是就是没有提其实是测试机器上的微信没有绑定银行卡,多么坑的坑啊。

j_spring_security_check 404错误

通过nginx来做负载均衡,在跳转到对应的tomcat的时候,如果不配置j_spring_security_check的跳转,会出现404错误,正确的配置如下

location ~ .*(j_spring_security_check)$ 
{
            proxy_pass http://tomcat_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 }

关于CKeditor的多实例问题

目前的解决方法是不同的页面中textarea的id和name都不同,并且在replace之前调用下面的代码

var instance = CKEDITOR.instances[‘xxxxxx’]; 
if ( instance) { 
      CKEDITOR.remove( instance); 

网上说过的一些方法都试过,除了上面的方法,尚未找到其他的解决方案,通过class加载一直不成功,可能跟工程里已经使用了xheditor冲突。

关于Linode的lish操作

Linode提供的lish操作是在Linode主机无法正常ssh访问的情况下的快捷通道,在linode manager的Remote Access选项卡的Lish via SSH中说明了登录的用户名和地址,用户名是linode manager的用户名,密码是对应的密码,使用putty或者其他ssh工具连接成功后,敲入lish命令,会显示当前该账号下的所有linode节点,敲入connect及需要连接的节点名称,连接成功后,输入该节点对应的ssh用户名和密码即可。

关于Openmeetings访问报错的解决方法

最近碰到一个问题,帮客户安装的openmeetings系统,在服务器重启后,就无法访问了,重启了red5服务多次,总是报netconnection.connect.failed错误,网上搜了搜是说fms服务没启动,查了一下服务也正常启动了,端口1935也正常监听,突然想到会不会是防火墙的问题,果然,防火墙没有增加1935端口的访问规则,添加后访问正常。

64位CentOS下安装 libreoffice

1. 下载安装包和语言包

wget http://jaist.dl.sourceforge.net/project/libreoffice.mirror/LibreOffice%204.1.3/LibreOffice_4.1.3_Linux_x86-64_rpm.tar.gz

wget http://download.polytechnic.edu.na/pub2/DocumentFoundation/libreoffice/stable/4.1.3/rpm/x86_64/LibreOffice_4.1.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz

 

2. 解压

tar xvzf  LibreOffice_4.1.3_Linux_x86-64_rpm.tar.gz

tar xvzf  LibreOffice_4.1.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz

 

3. 安装

yum install libpng

cd  LibreOffice_4.1.3_Linux_x86-64_rpm

yum localinstall RPMS/*.rpm 

cd  LibreOffice_4.1.3_Linux_x86-64_rpm_langpack_zh-CN

yum localinstall RPMS/*.rpm 

 

Ubuntu下openmeetings的安装脚本的几点修正

mysql -u root -ppassword -e "CREATE DATABASE openmeetings DEFAULT CHARACTER SET 'utf8';";
mysql -u root -ppassword -e "GRANT ALL PRIVILEGES ON openmeetings.* TO \"openmeetings\"@\"localhost\" IDENTIFIED BY \"password\" WITH GRANT OPTION;";

 

如果已经安装了mysql,则此次的password需要替换为当前mysql的root密码。

 

svn checkout http://svn.apache.org/repos/asf/incubator/openmeetings/branches/2.0/

此处的svn获取地址需要修改为http://svn.apache.org/repos/asf/openmeetings/branches/2.0/

 

 

根据经纬度计算两点距离的Python代码

根据经纬度计算两点距离的代码很多,但是多数是C#代码,也找到了一些Python写的代码但是没有写完整,这里就把这部分的Python实现代码完整一下,供有需要者使用

 

import math

def rad(d):

    return d*math.pi/180.0

 

def distance(lat1,lng1,lat2,lng2):

    radlat1=rad(lat1)

    radlat2=rad(lat2)

    a=radlat1-radlat2

    b=rad(lng1)-rad(lng2)

    s=2*math.asin(math.sqrt(math.pow(math.sin(a/2),2)+math.cos(radlat1)*math.cos(radlat2)*math.pow(math.sin(b/2),2)))

    earth_radius=6378.137

    s=s*earth_radius

    if s<0:

        return -s

    else:

        return s

 

if __name__=="__main__":

    print distance(40.030979,116.411018,40.015311000,116.422638000)

 

参考博客:http://blog.csdn.net/moodytong/article/details/8063469

Centos5.7下nginx1.2.0+mysql5.5.24+php5.4.3的安装


1)nginx1.2.0的安装

wget  http://nginx.org/download/nginx-1.2.0.tar.gz

tar xzf  nginx-1.2.0.tar.gz

cd nginx-1.2.0

./configure

make && make install


2)mysql5.5.24的安装

wget  http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.24.tar.gz/from/http://mirror.services.wisc.edu/mysql/

tar xzf mysql-5.5.24.tar.gz

mysql5.5以后开始采用cmake 编译

安装cmake

如果是干净的系统

yum -y install gcc libxml2-dev curl screen \

libpng12-dev autoconf libpcre3-dev make bzip2 \

libevent-dev patch libjpeg62-dev libcurl4-openssl-dev \

libfreetype6-dev g++ libtool libncurses5-dev psmisc lrzsz

然后运行

yum -y install cmake

cd  mysql-5.5.24

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data/mysql/data \

-DDEFAULT_CHARSET=utf8 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_EMBEDDED_SERVER=1 \

-DENABLED_LOCAL_INFILE=1 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0

make && make install

cp support-files/my-medium.cnf /usr/local/mysql/my.cnf

chmod +x /usr/local/mysql

chown -R mysql.mysql /usr/local/mysql


下面几步主要是配置mysql开机启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

chmod +x /etc/init.d/mysql

chkconfig -list

chkconfig -add mysql

chkconfig mysql on`

chkconfig -list mysql

安装默认数据库表

/usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/home/mysql/data –user=mysql

启动mysql   /etc/init.d/mysql  start


3)php5.4.3安装

wget  http://www.php.net/get/php-5.4.3.tar.gz/from/cn2.php.net/mirror

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"

wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"

wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"

wget http://imagemagick.mirrorcatalogs.com/ImageMagick-6.7.6-9.tar.gz

wget http://pecl.php.net/get/imagick-3.1.0RC1.tgz

编译安装php5.4.3所需支持库

tar zxvf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure –prefix=/usr/local

make

make install

cd ../


tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure

make

make install

/sbin/ldconfig

cd libltdl/

./configure –enable-ltdl-install

make

make install

cd ../../


tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/

./configure

make

make install

cd ../


ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so

ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config


export LD_LIBRARY_PATH=/usr/local/lib:LD_LIBRARY_PATH

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

/sbin/ldconfig

./configure

make

make install

cd ../

编译php

安装依赖包

yum install ncurses-devel libxml2-devel bzip2-devel libcurl-devel \

curl-devel libjpeg-devel libpng-devel freetype-devel net-snmp-devel

tar xvzf php-5.4.3.tar.gz

cd php-5.4.3

./configure –prefix=/usr/local/php5.4.3 –with-config-file-path=/usr/local/php5.4.3/etc \

–with-mysql=/usr/local/mysql/ –with-mysqli=/usr/local/mysql/bin/mysql_config \

–with-pdo-mysql=/usr/local/mysql/ –with-iconv-dir=/usr/local –enable-fpm  \

–disable-phar –with-fpm-user=www-data –with-fpm-group=www-data –with-pcre-regex \

–with-zlib –with-bz2 –enable-calendar –with-curl –enable-dba –with-libxml-dir \

–enable-ftp –with-gd –with-jpeg-dir –with-png-dir –with-zlib-dir –with-freetype-dir \

–enable-gd-native-ttf –enable-gd-jis-conv –with-mhash –enable-mbstring –with-mcrypt  \

–enable-pcntl  –enable-xml –disable-rpath  –enable-shmop –enable-sockets –enable-zip \

–enable-bcmath –with-snmp –disable-ipv6


make ZEND_EXTRA_LIBS='-liconv'

make test  

此时如果是64位操作系统,会出现"

libmysqlclient.so.18: cannot open shared object file: No such file or directory"的错误

解决这个错误只需要

ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib64/ 即可

make install

cp php.ini-production /usr/local/php5.4.3/etc/php.ini

编译安装PHP5扩展模块

wget http://pecl.php.net/get/memcache-3.0.5.tgz

tar zxvf memcache-3.0.5.tgz

cd memcache-3.0.5/

/usr/local/php5.4.3/bin/phpize

./configure –with-php-config=/usr/local/php5.4.3/bin/php-config

make

make install

cd ../

wget  http://pecl.php.net/get/memcached-2.0.1.tgz

tar xvzf memcached-2.0.1.tgz

cd memcached-2.0.1

/usr/local/php5.4.3/bin/phpize

./configure –with-php-config=/usr/local/php5.4.3/bin/php-config

会出现错误提示“memcached support requires libmemcached. Use –with-libmemcached-dir=”

需要安装libmemcached

centos如果需要通过yum安装libmemcached 那需要完成以下几步操作


1. 从下面下载最新的centalt-release rpm

http://centos.alt.ru/repository/centos/5/x86_64/

2. 安装 centalt-release rpm:

 

rpm -Uvh centalt-release*rpm

3. 安装libmemcached-devel rpm包:

 

yum install libmemcached-devel


make

make install

cd ../


tar zxvf ImageMagick-6.7.6-9.tar.gz

cd ImageMagick-6.7.6-9/

./configure –prefix=/usr/local/ImageMagick/ 

make

make install

cd ../

tar zxvf imagick-3.1.0RC1.tgz

cd imagick-3.1.0RC1/

/usr/local/php5.4.3/bin/phpize

./configure –with-php-config=/usr/local/php5.4.3/bin/php-config –with-imagick=/usr/local/ImageMagick

make

出现“ fatal error: wand/MagickWand.h: No such file or directory "错误提示


解决办法:

1.确认已安装pkgconfig,否则安装pkgconfig

2.完成以下两步

yum install gtk+-devel

export PKG_CONFIG_PATH=/usr/local/ImageMagick/lib/pkgconfig/

然后重新进行./configure,make操作

make install

cd ../

修改php配置

vim  /usr/local/php5.4.3/etc/php.ini 

最后增加:

;change for hugwww

extension_dir = /usr/local/php5.4.3/lib/php/extensions/no-debug-non-zts-20100525/

extension = "memcache.so"

extension = "memcached.so"

extension = "imagick.so"

启动php-fpm

cd /usr/local/php5.4.3/etc/

cp php-fpm.conf.default php-fpm.conf

groupadd www-data

useradd -g www-data www-data -s /usr/sbin/nologin

/usr/local/php5.4.3/sbin/php-fpm

查看是否启动,看到9000端口表示启动成功

netstat -antp |grep :9000 

修改nginx配置文件 nginx.conf

去掉下面文字前的注释符


        location ~ \.php$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME    /xxx/xxx$fastcgi_script_name;

            include        fastcgi_params;

        }

其中/xxxx/xxxx为ningx的web根目录,如果不修改,访问php文件可能会出现“no input file specified ”

最后重新启动nginx

可以写一个测试php文件放在nginx的web根目录下

<?php

phpinfo();

?>

在浏览器中打开  http://xxx.xxxx.xxx/test.php 看到php信息即php安装配置正确