一、模块模式
此模式下,php以apache模块形式运行
AddHandler aplication/x-httpd-php .php
设置后并未起作用;需要先引入php模块。
LoadModel php7_mod /path/to/php7.so
引入后应该就可以了;
安装的apache没有php模块,打算用apxs工具安一个,可是源码c文件在哪下载没找到。。。,没有验证。
二、php-fpm模式
利用端口监听连接
- 首先fpm监听某一个端口
listen 127.0.0.1:8088
- apache proxypass(或ProxyPassMatch) 进行请求转移
ProxyPassMatch (.*\.php) fcgi://path/to/root/dir
fcgi后面的这个路径是从linux根目录开始的,并不是www或者htdocs目录。如果误以为是www或者htdocs目录,访问文件时会报 file not found
利用socket连接(uds)
- php-fpm端生成一个socket
listen /var/run/abc.sock //这个名字是随便起的啥都行
apache端利用ProxyPass(或ProxyPassMatch)转发请求
ProxyPassMatch (.*\.php) unix:/var/run/abc.sock|fcgi://localhost/path/to/root/dir
- 开始还以为后面fcgi部分不是必须的,没写,结果报错,提示路径应该是绝对路径,不知道问题在哪。
- 配置的意思应该是:php的文件请求转发到socket,再通过管道符|(估计是)按fcgi协议发送;socket的作用是两者已连接,具体用什么协议通讯则是后者决定(这里是用fcgi的方式进行连接后续通讯);localhost后的路径还是从根目录开始的!
注意
php-fpm和apache都有以某用户运行的设置,二者要一致。不一致时,会报503错误。
三、fcgid模式
与php-fpm差不多,前者是多个php线程,这个是多个apache线程去运行php。
- 安装fcgid模块
去官网下载fcgid源码包,利用apxs进行安装。
APXS=/path/to/bin/apxs ./configure.apxs make make install
安装完后,httpd.conf中会自动引入fcgid模块
2. fcgid设置
LoadModule fcgid_module modules/mod_fcgid.soFcgidWrapper /usr/bin/php .phpoptions +ECECCgid
按说应该就好了呀,但是php脚本就是不解析,原样输出,错误日志页不报错,不知道那的问题。。。
来源地址:https://blog.csdn.net/weixin_44365748/article/details/127286703