首页 > webserver > nginx > 3.linux系统配置nginx支持PHP解析

3.linux系统配置nginx支持PHP解析

nginx配置表中带有php文件解析的配置,默认情况下是注销掉的.打开对应的注释即可.注释中有2种支持php的方式,通过php-cgi和php-fpm.

1 linux安装fpm-php

配置nginx支持php也可以不安装fpm-php.php-fpm是php-cli的进程管理程序,当一个进程关闭后,会自动启动一个新的线程.非常强大,建议安装装.其他操作系统类似.国内部分镜像源是php5-fpm,阿里云上的为php7-fpm.我们以ubuntu和centos为例介绍下php-fpm安装命令,其他linux系统类似,不再赘述.

1.1 ubuntu安装php-fpm

  • ubuntu安装php5-fpm

php5-fpm支持PHP5版本

apt-get install php5-fpm
  • ubuntu安装php7-fpm

php7-fpm支持PHP7版本

apt-get install php7-fpm

1.2 centos安装php5-fpm

yum install php5-fpm

2 linux采用php-cgi或者php-fpm支持php

linux安装php-fpm完成后,搜索一下是否有php5-fpm.sock或者php7-fpm.sock.

linux系统通过find命令查找文件:

find / -name php5-fpm

或者

find / -name php7-fpm

如果有这个文件就采用php-fpm的模式,没有的话就采用php-cgi模式.

3 linux修改nginx配置文件

默认情况下修改nginx安装目录中的"site-enable/default"文件.

  • nginx配置php-cgi支持php

打开nginx.conf中fastcgi_pass 127.0.0.1:9000;这行注释.

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#    # With php5-cgi alone:
    fastcgi_pass 127.0.0.1:9000;
#    # With php5-fpm:
#    fastcgi_pass unix:/var/run/php5-fpm.sock;
#    fastcgi_index index.php;
#    include fastcgi_params;
}
  • nginx配置php-fpm支持php

打开"fastcgipass unix:/var/run/php5-fpm.sock;","fastcgiindex index.php;""include fastcgi_params;"这三行注释.如果php-fpm的版本是php7-fpm则需要手动修改文件内容.

nginx配置php-fpm示例:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#    # With php5-cgi alone:
#    fastcgi_pass 127.0.0.1:9000;
#    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

4 测试nginx是否支持php

4.1 新建一个info.php文件,

linux新建文件的命令为touch.在nginx的web服务器的根目录新建一个名为info.php的文件.

touch info.php

4.2 将以下代码复制到文件中

通过vim程序编辑info.php文件.

vim info.php

将以下代码复制到文件中

<?php
    phpinfo();
?>

4.3 网页中打开info.php文件测试

用浏览器访问info.php文件,输入https://dashidan.com/info.php,配置正确的话会显示phpinfo页面,里面有详细的php相关的信息.如图:

3-1.png

如果访问php页面时,该页面从浏览器下载下来,没有正确显示phpinfo的信息说明配置错误.从新检查nginx的php相关配置.

转载请保留原文链接.