Apache使用fcgid模块配置多个PHP版本共存
来源:互联网 发布:淘宝图片像素大小 编辑:程序博客网 时间:2024/05/22 05:52
因为涉及多个时期开发的项目维护,每个项目使用的PHP版本都不同,想要在本地开发并调试就非常麻烦了,必须得想办法同时使用多个PHP版本才行
于是总结了下面方法做个记录,apache 用的不多,只是本地开发测试环境用apache感觉简单方便点儿。
如果用 Nginx 来配置多个PHP版本的话应该会更简单了吧,修改下PHP的listen端口就好了。
一、根据 apache 版本下载对应的 mod_fcgid-2.3.9-win64-VC14.zip
https://www.apachelounge.com/download/
二、修改 httpd.conf 末尾 添加
LoadModule fcgid_module modules/mod_fcgid.soAddHandler fcgid-script .fcgi .phpFcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000FcgidMaxRequestsPerProcess 1000FcgidMaxProcesses 15FcgidIOTimeout 120FcgidIdleTimeout 120AddType application/x-httpd-php .php# 全局默认使用的PHP版本配置FcgidInitialEnv PHPRC "C:/ProgramFiles(x86)/php5.6"FcgidWrapper "C:/ProgramFiles(x86)/php5.6/php-cgi.exe" .php# 上传文件的最大尺寸 100MBFcgidMaxRequestLen 104857600
注意了,这里的 FcgidMaxRequestLen 很重要也很坑爹。
当你上传文件的时候发现总是出现500错误,而程序其实没有错误。
实际上是因为上传内容体积过大,即便修改了php.ini 中配置的上传参数也没有用的,必须修改这里才行,nginx下也会有类似的问题
三、对需要不同 PHP 版本的设置 httpd-vhosts.conf 添加下面代码
FcgidInitialEnv PHPRC "C:/ProgramFiles(x86)/php7.0" FcgidWrapper "C:/ProgramFiles(x86)/php7.0/php-cgi.exe" .php
注意:FcgidWrapper 中的路径使不能存在 空格 的,否则无法启动 Apache 了
因为历史原因我的软件都给装在了这个Program Files (x86)文件夹下面,又懒得换路径,为了兼容,我这里创建了文件夹的符号链接
命令格式:
mklink /d "新生成的符号链接文件夹名称和绝对路径" "源文件夹绝对路径"
举个栗子:
DOS 命令行模式下输入
mklink /d "c:\abc" "c:\a b c"
修改 httpd-vhosts.conf 配置后的样子:
<VirtualHost *:80> DocumentRoot "E:\Website\domain.com\www" ServerName www.domain.com ServerAlias *.domain.com FcgidInitialEnv PHPRC "C:/ProgramFiles(x86)/php7.0" FcgidWrapper "C:/ProgramFiles(x86)/php7.0/php-cgi.exe" .php</VirtualHost>
同样的,如果你还需要其他版本则直接下载对应版本的PHP后解压,然后指向那个目录就行了
四、.htaccess 的重定向配置
以前是这样用的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
会出现错误,无法重定向到 index.php
No input file specified.
修改成下面这样就好了
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
配置完成。。。
再补上一个多版本的测试结果吧。
我测试了三个版本,
php5.6(全局默认使用的版本), php7.0,php7.1
httpd-vhosts.conf 配置如下:
Listen 81Listen 82Listen 83<VirtualHost *:81> DocumentRoot "E:\Website\local81" ServerName 127.0.0.1</VirtualHost><VirtualHost *:82> DocumentRoot "E:\Website\local82" ServerName 127.0.0.1 FcgidInitialEnv PHPRC "C:/ProgramFiles(x86)/php7.0" FcgidWrapper "C:/ProgramFiles(x86)/php7.0/php-cgi.exe" .php</VirtualHost><VirtualHost *:83> DocumentRoot "E:\Website\local83" ServerName 127.0.0.1 FcgidInitialEnv PHPRC "C:/ProgramFiles(x86)/php7.1" FcgidWrapper "C:/ProgramFiles(x86)/php7.1/php-cgi.exe" .php</VirtualHost>
重启Apache后打开三个端口输出 phpinfo() 结果如下:
可以看到三个端口输出的PHP版本都是不一样的表示配置成功了
- Apache使用fcgid模块配置多个PHP版本共存
- 关于部署多个php版本共存
- Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程
- Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程
- windows+apache+fcgid fastcgi运行配置
- VisualStudio2015配置共存的多个版本Python环境
- oneinstack一键包Nginx php多版本共存配置全过程
- oneinstack一键包Nginx php多版本共存配置全过程
- phpstudy多版本php共存,phpstudy无法多版本共存的方案,多个PHP同时运行
- IIS中多个版本php共存的方法,IIS如何快速搭建PHP网站,多个php实现共存的神器!
- Apache配置PHP模块
- Apache 配置 php 模块
- Nginx 与 阿帕奇 配合使用配置记录(实现 多个 tomcat 多个 php网站 共存)。
- window下多版本Python共存的配置和使用
- PHP多版本共存:php5.6与php5.5共存
- wampmanager配置多版本php,apache
- eclipse支持多个jdk版本共存
- python多个版本的共存问题
- C语言中对字符串操作的函数
- Android –图像检索
- 一个DV算法样例
- undefined reference to `vtable for boost::detail::thread_data_base'问题
- BZOJ3621: 我想那还真是令人高兴啊 复数运算
- Apache使用fcgid模块配置多个PHP版本共存
- EditTextPreference 设置 defaultValue 的数据类型显示问题
- AWS RDS 介绍 一)相关产品 二). 用户手册
- Linux "ls -l"文件列表权限详解
- 程序设计实训报告--小学生考试系统
- kobject和kset
- 获取VirtualBox COM对象失败,Unable to start the virtual device
- WebService WSDL
- RHCE练习题 8-9. 配置SMB共享 配置多用户SMB挂载