首页 Linux正文

通过FastCGI+php-fpm解析PHP代码

王昊 Linux 2019-07-15 274 0

此处实验依赖于前面的Apache和MariaDB

在之前的Apache基础配置中,我们的界面用的是html文件,但是很多时候需要加载的是php代码,这里我是启用了FastCGI+php-fpm功能,让httpd能解析php代码

在之前的文章中,我们新建了/etc/httpd/conf.d/virthost.conf文件作为httpd的配置文件,所以本次实验依然使用此文件

vim /etc/httpd/conf.d/virthost.conf

将index.html更改为index.php

编辑index.php文件

vim /data/web_data/index.php

<?php phpinfo();?>   

phpinfo本身是php内置的一个系统函数,里面包含了php的很多信息。phpinfo()是用来显示当前php环境的函数配置,许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示用来查看函数。

此时重启httpd会因错误而重启失败,解决办法是将主配置文件/etc/httpd/conf/httpd.conf中的Listen 80 注释掉

再次尝试重启

systemctl restart httpd

再次去浏览器输入ip查看

发现页面已经变成我们编辑的内容了,但是无法解析PHP代码,所以呢,要启用FastCGI+php-fpm功能,让httpd能够解析php代码

首先要在主配置文件中加载代理模块与fcgi模块

vim /etc/httpd/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

然后在配置文件中添加以下行

vim /etc/httpd/conf.d/virthost.conf

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/web_data/$1
ProxyPassMatch
//在这种情况下:只有与指定的正则表达式模式匹配的代理内容

^/(.*\.php)$
//从文档根开始,匹配以.php结尾的所有内容
^(插入符号)和$(美元)符号用于锚定URL的绝对开始和结束,以确保请求中的任何字符都不会转义我们的模式匹配。
嵌套括号使我们能够将整个请求URI(减去前导斜杠)引用为$ 1,同时仍然保持尾随pathinfo可选。

fcgi://127.0.0.1:9000
//通过mod_proxy_fcgi转发,使用fastCGI协议,到我们的php-fpm守护程序监听的端口。
这确定哪个fastcgi池将服务由此规则代理的请求。

/data/web_data/
//这必须与您的php文件的真实文件系统位置完全匹配,因为这是php-fpm守护程序将查找它们的位置。php-fpm只是解释传递给它的php文件; 它不是一个Web服务器,也不了解您的Web服务器的命名空间,虚拟主机布局或别名。

$1
//从原始请求扩展到整个请求URI,减去前导斜杠(因为我们已经添加了上面的。)

然后下载php-fpm

yum -y install php-fpm

若报以下错误,可以换yum源试试,本人此处用的是阿里源

E: Unable to locate package php-fpm

安装成功后,开启php-fpm

systemctl start php-fpm

再次去浏览器访问IP

此时就已经可以解析PHP代码了

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论