文档章节

PHP的多版本环境管理

看看这天
 看看这天
发布于 2015/08/09 00:40
字数 1094
阅读 108
收藏 11

        大多数语言编程的时候,都会碰到在不同版本下的代码兼容性问题,测试代码兼容性,或者调试老旧代码,需要不同的语言版本环境.

        ruby有了rbenv,rvm,nodejs也有nvm,当然php也应该有个类似的 phpenv , php-version , phpbrew 来管理PHP版本,简单查看了下这三个工具,我更偏向于phpbrew一些,其实我更愿意叫它PHPbrew.

如果你确定需要使用phpbrew,请认真读完本文,再去实践,请注意!前方有坑(其实我更推荐 vagrant ).

Brew & manage PHP versions in pure PHP at HOME

1.安装PHPbrew

下载:

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrewchmod +x phpbrewsudo mv phpbrew /usr/bin/phpbrew

2.简单使用

为你的shell环境运行初始化脚本:

phpbrew init

设置环境变量:

sudo vi ~/.bashrc#文件最后,插入下面这行代码source ~/.phpbrew/bashrc#保存退出:wq

显示已知版本:

phpbrew known===> Fetching release list...[==================================================================] 29.67/29.67KB 100%5.6: 5.6.3, 5.6.2, 5.6.1, 5.6.0 ...5.5: 5.5.19, 5.5.18, 5.5.17, 5.5.16, 5.5.15, 5.5.14, 5.5.13, 5.5.12 ...5.4: 5.4.35, 5.4.34, 5.4.33, 5.4.32, 5.4.31, 5.4.30, 5.4.29, 5.4.28 ...5.3: 5.3.29, 5.3.28, 5.3.27, 5.3.26, 5.3.25, 5.3.24, 5.3.23, 5.3.22 ...You can run `phpbrew update` to get a newer release list.

显示旧版本:

phpbrew known --old

更新版本列表:

phpbrew known --update

3.编译安装PHP

默认配置安装PHP:

phpbrew install 5.4.0 +default

测试安装:

phpbrew install --test 5.4.0

显示debug信息:

phpbrew -d install --test 5.4.0

安装旧版本:

phpbrew install --old 5.2.13

清理编译目录:

phpbrew clean

4.PHP编译参数

显示可用参数:

phpbrew variantsVariants:   all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, curl, dba, debug, dom,   embed, exif, fileinfo, filter, fpm, ftp, gcov, gd, gettext, gmp, hash,   iconv, icu, imap, inifile, inline, intl, ipc, ipv6, json, kerberos, libgcc,   mbregex, mbstring, mcrypt, mhash, mysql, opcache, openssl, pcntl, pcre,   pdo, pgsql, phar, phpdbg, posix, readline, session, soap, sockets, sqlite,   static, tidy, tokenizer, wddx, xml, xml_all, xmlrpc, zip, zlib, ztsVirtual variants:   dbs: sqlite, mysql, pgsql, pdo  mb: mbstring, mbregex  neutral:   default: bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc,   json, mbregex, mbstring, mhash, mcrypt, pcntl, pcre, pdo, phar, posix,   readline, sockets, tokenizer, xml, curl, openssl, ziUsing variants to build PHP:  phpbrew install php-5.3.10 +default  phpbrew install php-5.3.10 +mysql +pdo  phpbrew install php-5.3.10 +mysql +pdo +apxs2  phpbrew install php-5.3.10 +mysql +pdo +apxs2=/usr/bin/apxs2

5.其他配置选项

phpbrew install 5.3.10 +mysql +sqlite -- \    --enable-ftp --apxs2=/opt/local/apache2/bin/apxs

6.使用和切换

临时使用:

phpbrew use 5.4.22

切换版本(设置默认版本):

phpbrew switch 5.4.18

关闭:

phpbrew off

7.显示已经安装过的PHP版本

phpbrew list

8.管理FPM

        NGINX需要配合php-fpm使用,因此,如果是使用 LNMP 或者自己安装的NGINX+PHP的运行环境,则需要在phpbrew安装PHP的时候加上+fpm 模块,才能使用phpbrew的模块管理.

phpbrew install 5.6.3 +fpm

启动FPM:

phpbrew fpm start

停止FPM

phpbrew fpm stop

显示php-fpm的模块:

phpbrew fpm module

测试php-fpm的配置

phpbrew fpm test

配置php-fpm

phpbrew fpm config

更多     扩展安装      启用扩展      配置PHP     管理FPM     其他组件(composer,phpunit).
        

9. #实践笔记

OS X笔记:
安装准备:

brew install automake autoconf curl pcre re2c mhash libtool icu4c gettext jpeg libxml2 mcrypt gmp libevent libpng freetypebrew link icu4cln -s /usr/local/include/freetype2 /usr/local/include/freetype2/freetype

安装phpbrew:

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrewchmod +x phpbrewsudo mv phpbrew /usr/bin/phpbrewphpbrew initsource ~/.phpbrew/bashrcphpbrew lookup-prefix homebrew

安装php版本:

#同样的在其他系统平台也会出现类似库找不到的问题,需要手动指定路径phpbrew install 5.3.29 +default +fpm +pdo +mysql +sqlite +gd --  --with-gd=shared --with-jpeg-dir=/usr/local/Cellar --with-png-dir=/usr/local/Cellar --enable-gd-native-ttf --with-freetype-dir=/usr/local/Cellar#print_r(gd_info());

注意:如果配置或编译的时候出现报错,请查看此页面 Requirement

安装PHP版本

测试默认config

phpbrew install 5.6.3 --test +defaulttail -f /home/rming/.phpbrew/build/php-5.6.3/build.log

默认:

phpbrew install 5.6.3 +default +fpm +pdo +mysql +sqlite +gdtail -f /home/rming/.phpbrew/build/php-5.6.3/build.log

精简:

phpbrew install 5.6.3 +fpm +json +dbs +mb +curl +mcrypt +filtertail -f /home/rming/.phpbrew/build/php-5.6.3/build.log
  • +json是因为phpbrew本身是个phar包,依赖于php的json函数

  • +fpm是为了nginx,phpbrew安装的php-fpm默认listen=127.0.0.1:9000,因此需要把之前lnmp的配置文件fastcgi_pass选项更改为 127.0.0.1:9000;

  • +dbs是因为没有安装mysqli扩展,想用个phpmyadmin都困难,囧;

  • +mb 是多种语言编码字节数问题,为了中文字符截断和匹配使用

  • +curl curl扩展 , 很常用的,你懂得

  • +mcryptphpmyadmin需要

  • +filter filter_var过滤函数

写个脚本切换php-fpm:

function nginxenv(){        phpbrew fpm stop &>/dev/null;        phpbrew switch ${1};        phpbrew fpm start &>/dev/null;}

        保存文件到~/.phpbrew/nginxenv , 然后在~/.bashrc最后加上 source ~/.phpbrew/nginxenv , 然后命令行里就可以 使用nginxenv 5.3.29这样切换版本了.

参考:

本文转载自:http://rmingwang.com/php-version-management-phpenv.html

看看这天
粉丝 14
博文 55
码字总数 1910
作品 1
吉安
程序员
私信 提问
duolatech/xApiManager

项目介绍 xApi Manager-哆啦接口管理平台 XAPI MANAGER -专业实用的开源接口管理平台,为程序开发者提供一个灵活,方便,快捷的API管理工具,让API管理变的更加清晰、明朗 特点 全站基于 La...

duolatech
2017/04/19
0
0
Windows 2008 IIS同时配置多版本的php

Windows可以通过IIS下安装PHP Manager工具让IIS可以同时支持多版本的php,具体步骤如下: 1.下载PHP Manager软件(可以在http://phpmanager.codeplex.com/releases/view/69115下载),下载后...

星痕2018
2015/11/17
0
0
IIS7(Windows7)下最简单最强安装多版本PHP支持环境

最近调试程序,要在PHP5.2和5.3之间换来换去,而习惯了windows下的开发,就琢磨怎么在iis下安装多版本支持,赫然发现其实微软都为我们准备了好工具。 微软对PHP的支持越来越强,这点在IIS7中...

as007012012
2017/03/02
0
0
Linux 服务器 WEB 管理面板--VPSMate

VPSMate Linux 服务器 WEB 管理面板 快速在线安装、小巧且节省资源 当前支持 CentOS/Redhat 5.4+、6.x 基于发行版软件源的软件管理机制 轻松构建 Linux + Nginx + MySQL + PHP 环境 强大的在...

匿名
2012/10/30
9.2K
2
最稳定的Nginx绿色环境,可无限自定义PHP和mysql版本、同时运行N个版本

应学生要求,我最近更新了PHPWAMP,新版PHPWAMP8.8.8.8n添加了强大的Nginx站点管理 核心经过重新编译、完美解决不同版本和不同组件间的兼容,自动智能匹配系统所需的组件。 纯绿色解压即可使...

Lccee老师
2017/07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CenOS7安装Docker--yum安装

每次安装都要去看官方文档,比较烦。所以把官网的搬过来。官网链接:https://docs.docker.com/install/linux/docker-ce/centos/ #卸载已有的Dockersudo yum remove docker \ ...

RippleChan
2分钟前
0
0
SpringBoot2.0高级案例(07) 整合:Redis集群 ,实现消息队列场景

本文源码GitHub地址:知了一笑https://github.com/cicadasmile/middle-ware-parent 一、Redis集群简介 1、RedisCluster概念 Redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了...

知了一笑
18分钟前
0
0
服务器常见问题和故障诊断排除

原创: AIX7 talkwithtrend x86 服务器常见问题和故障诊断排除 | 周末送资料 : https://mp.weixin.qq.com/s/Qe_KConoUS6UzIANxAKacw 注意 : x86是我们广为熟知的架构,在核心处理器基础上,...

寰宇01
24分钟前
0
0
Android Camera模块解析之拍照

最近学习Android的camera模块,本文先介绍一下camera2的api,然后给出android camera拍照的例子,讲解一下camera 拍照的原因知识,与大家共勉。 camera2 介绍 android camera拍照功能介绍 一...

天王盖地虎626
32分钟前
7
0
Excel 曝Power Query安全漏洞

近日,Mimecast 威胁中心的安全研究人员,发现了微软 Excel 电子表格应用程序的一个新漏洞,获致 1.2 亿用户易受网络攻击。其指出,该安全漏洞意味着攻击者可以利用 Excel 的 Power Query 查...

linuxCool
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部