PHP字符串截取

这段代码好像是Tp的,也不记得了,作用是字符串截取,很多同学在抄的过程中把16进制的\弄丢了,于是好多人拷贝回去的代码都是x01-x7f这样的。这样是不能正常截取的。。。

 

Zend Framework 2 创建 ViewHelper

 

PayPal REST 支付开发

PayPal 类似于国内的支付宝,财付通属于第三方支付公司主要是经营付款/收款业务。以前有老的api,看了一下我觉得不太好懂,新出的REST API看上去没有那么难。公司新出了一款产品,需要在国外出售,第一支付方式我们选用PayPal。

Paypal收款开发分为三步:

1.创建一个订单

2.跳转到Paypal让用户确认支付此订单

3.回调页执行一个执行扣款即可

下载Paypal官方SDK:https://github.com/paypal/PayPal-PHP-SDK

下载SDK后,仔细阅读github上 SDK主页上的说明,我之前就是因为没有仔细阅读这些,自己走了些弯路,SDK里有一些支付的示例,像使用Paypal支付,信用卡支付常用的都有了,可以支付copy一份出来然后稍微改动一下就可以实现支付。

理论上PayPal支持以下三种收款方式:

Sale,适用于马上发货的商品,如虚拟物品销售,这类网站集成EC,通常选sale

Authorization:买家付款后需要你进行确认,然后钱才进你的pp账户

Order:普通物品销售,买家一付款,钱就到你账户,不需确认

 

PHP显示空白页,既不报错,也不显示

十有八九是编码习惯的问题,

这样的判断,在Windows下没有问题,移植到Linux平台时,会出现空白页,既不报错,也不显示的情况

还有一种情况,在windows下会在文件顶部产生一个 ^M,即:

这个在 windows下是看不见的,在Linux下用vim编辑器一打开就能看见了,如何去除^M这个符号,网上办法很多

PHP5.4 以下 json_decode 不支持BigInt

在PHP中,json_decode函数经常会用到,特别是写一些api的时候 ,数据格式一般不是XML就是JSON

json_decode当遇到长整形,且超过14个字节的时,会使得decode后的值不正确

比如:

正常情况下会输出:

但是,输出却是:

这时候不管是入库,还是判断啥的好像都不好使…

解决办法如下:

 

PHP session保存过期时间

通常情况下,我们上传网站到服务器,不可能每一部服务器都是由我们自己在控制。关于Session的保存,总会有这样或那样的总是存在。

PHP session 使用File存储有几个至关重要的参数是一定要设置的:

  1. Session文件存储路径,即 session_save_path()
  2. Domain 即 session.cookie_domain
  3. GC回收时间 即 session.gc_maxlifetime
  4. Cookie生存时间 即 sesssion.cookie_lifetime
  5. 使用cookie存储session id  即 session.use_cookie

Mac PHP开发集成环境MAMP Pro

Mac没有找到好一点的集成环境,XAMPP在Windows下用用还行,Mac下我就觉得不太好用了。后来找到一个叫MAMP的集成环境,说实话还不错,用起来也挻方便的。推荐大家使用
现在MAMP已经出到3了,前段时间下载下来用过,发现Bug有点多,就没继续使用,转而使用稳定的老版本2.4.1,这个版本也是不错了,支持到php5.4.10,对PHP的支持也不算是老,就算是对php版本要求很高的Zend Framework 2也是可以使用这个集成环境来开发。

这玩意儿集成得很不错,没有任何副作用,运行良好。PHP包含多个版本可以选择,支持PHP的一些Cache扩展比如:XCache,APC等。支持PHP,Apache参数自定义。本地使用起来极为方便

mamp-pro-php-cache

放一个2.4.1版本的下载:

下载:MAMP_MAMP_PRO_2.1.4

本来想传网盘,传了一下午,百度和微云都出错。。。放弃了

php-fpm设置进程池

设置多个进程池,每个进程池分配不同的站点,可以做到一个站占用资源过多导致其它站也不能访问的尴尬情况。这使得网站可以更好的运行,如果某个站点受到少量CC攻击,也不至于拖跨所有的站点

第一步增加站点用户:

-M:不生成家目录,因为我们不需要此用户登录

-s:预设bash,默认是 /bin/bash,由于我们不需要此用户登录所以直接使用/sbin/nologin

-n:取消建立以用户名称为名的群组

-g:指定用户所属的群组

第二步在php-fpm文件中增加用户进程池:

 第三步在nginx中修改 fastcgi_pass 为 unix 域协议

最后一步:

用 ./php-fpm -t  配置通过就直接重启 service php-fpm restart,你的重启方式可能与我的不同

用./nginx -t 测试配置是否通过,若通过直接重启./nginx -s reload

将网站目录设置权限:0755 即:drwxr-xr-x。使只有fourfire这个用户可以写入

注意:重启的顺序不能颠倒,要先重启php-fpm生成/tmp/fourfire.sock后,./nginx -t 才会测试ok