官方网站;
http://pecl.php.net/package/msgpack
http://pecl.php.net/package/yar

$wget http://pecl.php.net/get/msgpack-0.5.7.tgz
$tar xvzf msgpack-0.5.7.tgz
$  /usr/bin/phpize
$ ./configure –with-php-config=/usr/local/php/bin/php-config
$ make
$ make install

在php.ini 里添加如下内容.
extension=msgpack.so

编译安装:
$wget http://pecl.php.net/get/yar-1.2.4.tar.gz
$tar xvzf yar-1.2.4.tar.gz
$ /usr/bin/phpize
$./configure –with-php-config=/usr/local/php/bin/php-config
$make & make install

然后会生成yar.so文件在php扩展目录里。
修改php.ini
在最后添加一句
extension=yar.so

装了phpstudy,为了方便启动 自己写了个bat内容是这样的

@ECHO OFF
echo 正在停止Nginx进程……
nginx\Process -k nginx.exe
nginx\Process -k nginx.exe
echo 正在停止PHP(FastCGI)进程……
nginx\Process -k php-cgi.exe
nginx\Process -k mysqld.exe
echo 正在启动Redis进程…..
nginx\Process -k redis-server.exe

echo 正在启动php(FastCGI)进程……
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini
echo .
echo .
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini
echo .
echo .
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini

echo 正在启动MySQL进程……
php540\RunHiddenConsole.exe  mysql\bin\mysqld.exe
echo .
echo .

echo 正在启动Nginx进程……
cd nginx
RunHiddenConsole.exe nginx.exe
echo .
echo .

REM 启动redis
echo 正在启动Redis进程……
cd ..\redis
RunHiddenConsole.exe redis-server.exe redis.conf
echo .
echo .

exit

 

其中php540是我在网上现在的php5.4.0ts版的,ps 一件包可以随意升级的php

另外有两个软件  process 和 RunHiddenConsole.exe 在这里下载nginx

然后放到nginx目录下  并且拷贝一份RunHiddenConsole.exe 到php540目录下

每次开机就启动这个bat是没有问题的。但是有时候打开其他软件php就起不来了。因为php用的是9000端口。我怀疑是此端口被占用了  用cmd查看端口命令   netstat -aon|findstr “9000”

TCP    0.0.0.0:9000           0.0.0.0:0              LISTENING       18204
TCP    [::]:9000                   [::]:0                     LISTENING       18204

可以看到9000端口被pid为18204的软件占用。

用任务管理器看到pid为eclipse占用。然后关闭eclipse 再先启动此bat  再打开eclipse就没问题了

 

1.Yaf安装  点击查看

2.zend studio 或者 eclipse 支持yaf智能提示 代码补全功能

创建临时目录 php-doc
cd php-doc
svn checkout https://svn.php.net/repository/phpdoc/modules/doc-en ./phpdoc-en
等待读取完成后,上传 auto.php 至当前目录
php auto.php phpdoc-en/en
生成 php5.3 文件夹,其中便是扩展文档。如果是php的其他版本会生成php5目录
复制需要的并加入至ZendStudio(eclipse)的PHP Libraries 即解决问题

PS:auto.php下载

3.添加智能提示图解请看本站phalcon

Thinkphp版本3.2.3 环境LNMP 测试URL  /Admin/Message/index/p/3.html  这个是一个分页 Admin模块下

thinkphp用U方法在windows上正常。win8.1 nginx 1.6

但是在window上却显示/Admin/Message/Admin/Message/index/p/3.html

明显多了个/Admin/Message  查看源代码  里面用了个U方法  然后一点一点的查找U的源代码

发现一个服务器中 PHP 魔术变量__APP__ 在window中解析为”” 而linux解析为 /Admin/Message

好了,我们找到了问题的根源了。解决版本就很简单了

我们在入口文件中加上这样一句代码就可以了

define(__APP__ , ”);//防止linux  nginx  解析问题

总结,在我们遇到程序问题时。我们一定要读取源码,然后一点一点的分析各个变量  建议你用 print_r

测试环境运行很OK,但是放到线上就偶尔出现502错误。

Nginx 502 Bad Gateway的含义是请求的CGI已经执行,但是由于某种原因没有执行完毕而导致CGI进程终止。

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的CGI。

我们这边应该都是部分耗时操作引起了超时,因此需要增大NG的超时时间。
NG的http节
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffer_size 1024k;
fastcgi_buffers 32 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;

相应的默认参数
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;