以下为CentOS7安装PHP7以上版本及配置NGINX支持PHP和PATH_INFO的操作步骤:
安装PHP和PHP-FPM
php7的效率要比之前的php版本高出30%左右,因此有必要升级,但是直接手动编译php7相对比较麻烦,用户可以参考如下方法直接通过yum进行安装。
删除之前的php版本
1 | yum remove php * php-common |
由于linux的yum源不存在php7.x,所以我们要更改yum源:
1 | rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |
查看yum源中有没有php7.x
1 | yum search php7 |
php7.0.x对应yum search php70w和yum install php70w
php7.1.x对应yum search php71w和yum install php71w
php7.2.x对应yum search php72w和yum install php72w
yum 安装php72w和各种拓展,选自己需要的即可:
1 | yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml |
*如果安装php-fpm,必须包含install php72w-fpm php72w-opcache
安装完成,查看php版本
1 | php -v |
配置php.ini
1 | vi /etc/php.ini |
启动php-fpm
1 | systemctl start php-fpm |
开机启动php-fpm设置
1 | systemctl enable php-fpm |
配置 NGINX与PHP互通
修改 /etc/nginx/nginx.conf
默认情况下,nginx是不支持php和path_info的,我们需要做些配置让它支持,关于nginx的其他配置信息不再复述,只来说下server中的设置。
1 | server{ |
首先来说下root,在server里面可以定义root,在location里面也可以定义root,区别在于定义在location里面的root不可以作用于其他的location中,$document_root指的是定义在server中的root,如果未定义,默认为nginx安装目录下的html文件夹。
如果只是单纯的想要支持php,location可以简化为如下
1 | location ~ \.php$ { |
但是如果要支持path_info,就需要更改配置
- ~ .php改为~ .php(.*),因为要接收.php后面的参数,不能让它被当做目录处理。
- 添加fastcgi_split_path_info,该参数后面需指定正则表达式,而且必须要有两个捕获,第一个捕获将会重新赋值给$fastcgi_script_name,第二个捕获将会重新赋值给$fastcgi_path_info。
- 添加fastcgi_param PATH_INFO,值为$fastcgi_path_info。