PHP的多版本环境管理

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

????????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这样切换版本了.

参考:

时间: 2024-10-24 15:22:40

PHP的多版本环境管理的相关文章

linux下jdk多版本管理

linux下jdk多版本管理 项目开发中,不管是哪种语言都避免不了多个版本环境管理问题(本文虽然以jdk为例来写的,但不仅限于jdk),如何能做到快速的环境升级与切换确实是一件深思的事! 安装jdk 实验安装两个版本: jdk-7u80-linux-x64.tar.gz jdk-8u144-linux-x64.tar.gz 下载 wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfa

Anaconda多环境多版本python配置指导

Anaconda多环境多版本python配置指导 来自:http://www.jianshu.com/p/d2e15200ee9b 原文地址:http://conda.pydata.org/docs/test-drive.html conda测试指南 在开始这个conda测试之前,你应该已经下载并安装好了Anaconda或者Miniconda注意:在安装之后,你应该关闭并重新打开windows命令行. 一.Conda测试过程: 使用conda.首先我们将要确认你已经安装好了conda 配置环境.

python之raise、assert、with/as环境管理器

要故意出发异常,可以使用raise语句,形式如下: raise <name>  #manually trigger an exception raise<name>,<value> #pass extra data to catcher too raise  #re-raise the most recent excepti 第二种形式可以随着异常传递额外的数据,从而为处理器提供细节. assert <test>,<data>  #<dat

Python环境管理--virtualenvwrapper

遇到问题: 当最近的开发和部署过程中,多个服务器部署的时候发现对于库和包的管理非常混乱,主要有俩个版本问题: 因为业务需要,代码得分别部署在不同的服务器上面,每次部署的时候都得重复的安装包而且不能确定是否跟开发环境中的包版本相同 在本地环境下,不同的程序得用到不同版本的库和包,为了防止不同程序之间的混乱 所以需要对环境进行管理,才不会使开发环境和运行环境混乱. 解决问题: 最开始我尝试使用了Virtualenv,之后找到了Virtualenv的延伸工具-----virtualenvwrapper

008_使用pyenv进行py开发环境管理

一. 安装Python 绝大多数Python入门书籍,都会介绍如何安装Python,然而,本书要介绍一种全新的安装方式.使用pyenv来安装并管理我们的环境. pyenv简介 由于Python的依赖是基于site的,这多与生产环境来说,是一种简单而正确的方式,然后,对于我们的开发环境,基于这样的管理方式,带来了可怕的第三方依赖管理的难题.想象一下,你在开发一个新项目的同时,还在维护一个就项目, 新项目依赖某个包的较新的版本,旧项目却依赖一个相对较旧的版本,而这两个版本是不兼容的,事实上,这种不兼

uwsgi的python2+3多版本共存

1.首先,机器需要有python2和python3的可执行环境.确保pip和pip3命令可用.原理就是在哪个环境下安装uwsgi.uwsgi启动的时候,就用的哪个python版本2.安装virtualenv环境管理工具3.创建python2和python3的虚拟环境4.进入python2虚拟环境5.进入python3虚拟环境**常规发布应用的时候.可以编写shell脚本执行相应的命令启动即可,如下 原文地址:http://blog.51cto.com/leizhu/2065394

域环境管理---运维笔

今天学习了域环境管理,大致分为三个部分.域用户账户,组及OU的管理:域功能级别的升级:AD DS管理工具的安装与使用. 与用户帐户的管理包括域用户账户的命名规则及密码规则.组管理包括组的分类(安全组与通用组),组的作用域(本地组域,全局域,通用域).ou管理包括了ou的概念(域的一种容器)和OU的管理(创建及删除).OU的删除需要注意一点:是否勾选防止误删.. 域功能级别的升级包括域功能级别和林功能级别的升级. AD DS安装的注意事项有:①必须是windows 操作版本的系统.②具有本地管理员

Python多环境管理

Python环境管理 什么是Anaconda Anaconda是专注于数据分析的Python发行版本,包含了conda.Python等190多个科学包及其依赖项.Anaconda通过管理工具包.开发环境.Python版本,大大简化了你的工作流程.不仅可以方便地安装.更新.卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目. 下载地址 什么是Conda Conda是一个开源的包.虚拟环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同

python虚拟环境管理之virtualenv,virtualenvwrapper,pipenv,conda

虚拟环境的作用 使python环境拥有独立的包,避免污染原本的python环境.为不同的项目创建不同的环境可以避免安装的库过于庞大和相互干扰. 例如你想在同一台机器上开发用python2和python3写的2个项目就可以用虚拟环境进行隔离,又网站开发.爬虫和科学计算所需要的包都不一样也可以用虚拟环境. 下面有几种虚拟环境管理工具自行选择 virtualenv 安装 pip install virtualenv 创建 mkdir myproject cd myproject virtualenv