概念
弄清楚cgi、fastcgi、mod_fcgid、mod_php、php-fpm的异同
过程
- 安装不同版本的php,可以编译安装也可以apt源安装,但是要记得安装cgi模块
- 查看cgi模块所在地址,
find ./ -name php-cgi
- 编译安装mod_fcgid模块,在这里下载或者
wget https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
- 解压缩。文件夹目录里并没有makefile,而是需要自己加入apxs参数生成。在这之前先找到apxs的位置
find ./ -name apxs
,找到后在刚刚解压出来的目录里执行
其中APXS=/usr/bin/apxs ./configure.apxs
usr/bin/apxs
替换为刚刚我们找到的apxs地址 - 成功生成makefile后,在当前目录下面执行
make
和make install
,不出意外的话你就能在服务器里找到mod_fcgid.so了 - 为了灵活配置,我们采取.htaccess文件配置的方法。在想要配置不同版本的站点目录里面,新建一个.htaccess文件
注意不要漏了vim /var/www/html/mysite/.htacess
.
,路径是自己的站点目录 - 在.htaccess文件里添加如下内容
大部分都不用改,FcgidWrapper后面的路径可以自己定<IfModule mod_fcgid.c> <FilesMatch "\.ph(p3?|tml)$"> SetHandler fcgid-script Options +ExecCGI FcgidWrapper /usr/local/bin/php-wrapper # SetHandler application/x-httpd-php </FilesMatch> </IfModule> <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
- 找到自己想设置的版本的php.ini的位置,同理用find即可
- 在上面定义的
php-wrapper
的路径下面新建一个php-wrapper文件
并添加以下内容vim php-wrapper
其中,#!/bin/sh # Set desired PHP_FCGI_* environment variables. # Example: # PHP FastCGI processes exit after 500 requests by default. PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS PHPINIDir="/usr/local/php5/php.ini" # Replace with the path to your FastCGI-enabled PHP executable exec /usr/local/php5/bin/php-cgi -c "/usr/local/php5/php.ini"
PHPINIDir
后面的内容和最后一行双引号里的内容替换为第8步里找到的php.ini的位置,最后一行的exec
后面的php-cgi的路径改成我们在第2步里找到的路径 - 虽然大部分网上的文章都说不需要重启apache2,但是个人实测是要重启的。重启之后在对应页面写个phpinfo就能知道有没有配置成功啦
参考文章
http://www.tech1024.com/original/2986.html
https://blog.csdn.net/im_kk/article/details/42554855
https://www.leixuesong.cn/2841