本文不会具体讲php环境怎么搭建,只是记录一个php新手遇到的疑惑与问题,为他人提供参考。
名称解释
CGI:全称是“通用网关接口”(Common Gateway Interface)。程序之间“交谈”的一种方式。
FastCGI:CGI采用fork-and-execute的模式,而FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着。
php-fpm:PHP-FPM(FastCGI Process Manager),FastCGi进程管理器。
访问流程
以nginx+php-fpm为例,请求打到nginx,nginx将请求转发到php-fpm监听的9000接口,php-fpm处理完请求,将结果返回给nginx,然后原路返回。具体流程如下:
nginx配置
nginx中需要将请求转发给php-fpm,配置如下:
root:指向php代码的web目录,web目录下有index.php为请求入口。
fastcgi_pass:为php-fpm监听的接口(127.0.0.1:9000 ,可以通过losf -i:9000查询)或者套接字( unix:/tmp/php-fpm.sock netstat -nptl | grep php-fpm查询),
fastcgi_param:php请求需要访问的是网站根目录下php文件,没有这个参数,请求会返回空白。
一句话,php请求会打到root指向的目录下的fastcgi_index指向的文件。
第三方包
php5.3.3之前php-fpm只是一个第三方的包,安装php并不会自动安装php-fpm,之后的版本已经集成了php-fpm。
扩展包
当需要使用某种工具时,必须得添加相应的扩展包,而嫡系的扩展包,安装会比较容易。譬如redis,而一些第三方的就相对麻烦了,譬如lua。
切记,安装之后记得重启php-fpm才会生效。
相关命令
1 关掉php-fpm进程:sudo pkill php-fpm
2 重启好像只能找到php-fpm文件:
3 查看扩展 php -m
配置文件
php配置文件为php.ini,修改配置文件之后需要重启服务。
安装完扩展之后,需要在php.ini中添加extension=redis.so,然后重启php-fpm才能生效。