Yii2 Day 8 配置多版本PHP

起因

Yii2对最低要求PHP5.4,但是目前很多空间或者主机,PHP的版本还停留在5.3及以下。这个时候就面临两个选择:

  1. 升级PHP版本
  2. 再安装一个高版本PHP

如果已经有站点在这个服务器上运行的话,贸然升级PHP版本,很可能让那些使用了过时的函数,不规范用法的PHP程序报一堆警告或者错误,那就无可挽回啦。安全起见,再安装一个高版本PHP比较保守些。那么如果让Nginx或者Apchce使用不同版本的PHP呢?那就是PHP-FPM.

PHP-FPM

FastCGI Process Manager, 即FastCGI进程管理器。使用PHP-FPM模式的配置PHP站点,一个请求的流程是这样的(以Nginx+PHP-FPM为例):

  1. PHP-FPM启动监听,通常默认是9000,所以很多Nginx配置会有一条 Fastcgi-pass 127.0.0.1:9000
  2. 浏览器发送请到Nginx应用服务器
  3. Nginx把PHP请求,转发给PHP的FastCGI进程,
  4. FastCGI进程处理完毕PHP脚本后,返回给应用服务器,服务器再返回给浏览器。

因此,让不同的站点使用不同的PHP版本,就可以通过将请求转发给不同的PHP-FPM进程。

编译PHP

下载相应版本的PHP代码,编译安装到不同的路径下,把需要的扩展尽量都加进去:

<!-- lang: shell -->
./configure --prefix=/usr/local/php-5.5 --with-config-file-path=/usr/local/php-5.5/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-bz2 --with-curl=/usr/bin --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local  --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --with-mcrypt=/usr/bin --enable-zip --enable-soap --enable-mbstring  --with-gd --with-openssl --enable-pcntl --with-xmlrpc --enable-opcache


由于Yii2使用到了mcrypt,所以加了–with-mcrypt,但是如果没有安装过,configure的时候会报找不到 mcrypt.h之类的错误,说明系统确实这个库,需要先安装,使用yum install libmcrypt mcrypt mhash. 再次configure就可以不报错了。

配置PHP-FPM

安装完毕后,打开 php-fpm.conf, 修改监听的端口,或者修改sock文件名称,防止和旧版本的PHP-FPM进程冲突。然后启动这个php-fpm进程。

修改站点配置

主要就是修改FASTCGI_PASS, 指向相应的监听端口或者sock文件。

时间: 2024-12-06 23:55:38

Yii2 Day 8 配置多版本PHP的相关文章

yii2发送邮件(配置QQ版本)

1:首先在配置文件main-local.php components=>[]里面配置 'mailer' => [              'class' => 'yii\swiftmailer\Mailer',              'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件                'transport' => [                

Yii2 的快速配置 api 服务 yii2-fast-api

yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用restfull的标准,方便前端开发处理接口数据以及各种异常. Installation 使用 Composer 安装 在项目中的 composer.json 文件中添加依赖: "require": { "deepziyu/yii-fast-api": "*&

Java环境变量配置&amp;解决版本不一致问题

之前用Myeclipse编译运行Java没有问题 但是突然想用简单点的NotePad++以及cmd直接编译运行Java 这就让我倒腾了一晚上 先说下问题的解决,再总结下查阅的一些知识. 1.进行win8下Java环境变量配置,在"系统变量"下进行如下配置: (1)新建->变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_05(这只是我的JDK安装路径) (2)编辑->变量名:Path在变量值的后面加上:;%JAVA_HOME%\

查看linux机器配置&内核版本

[[email protected] bin]# uname  -a   Linux hadoop1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] bin]#  cat /proc/version Linux version 2.6.32-431.el6.x86_64 ([email protected].bsys.dev.ce

Mac 配置java版本 ---- MySql数据库权限设置 --- openfire

java -version 显示java 版本 sudo su - root 切换身份 cd /usr/local/openfire 进入openfire目录 cd bin/ 进入 bin vim openfire.sh ——— 修改java路径 打开openfire.sh - 配置java路径 pwd  ——— "/System/Library/Frameworks/JavaVM.framework/Home” 显示目录 cd /Library/Java/JavaVirtualMachines

H3C 交换机设置本地用户和telnet远程登录配置 v7 版本

H3C 交换机设置本地用户和telnet远程登录配置   v7版本 一.配置远程用户密码与本地用户一致 [H3C]telnet server en //开启Telnet 服务[H3C]local-user admin //添加本地用户New local user added.[H3C-luser-manage-admin]password simple ljp123 设置明文密码[H3C-luser-manage-admin]service-type telnet 设置服务类型为telnet[H

myEclipse配置java版本(环境、项目、编译)

从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource Path Location Type Java compiler level does not match the version of the installed Java project facet.出现这个问题的原因是因为,eclipse/myeclipse的jdk编译版本与出现问题的项目JDK编译版本不一致所导致! 工具/原料 eclipse/MyEclipse 方法/

UBUNTU配置任意版本的APT-GET镜像

我们知道,迄今为止,Ubuntu已有多个发行版,如11.04.11.10,以至于现在最新的16.*.而我们平常通过apt-get来安装软件,如果OS版本不同,那么镜像源的配置就不同,否则就会出现找不到对应软件.软件版本不匹配等一系列奇怪的问题.这里,我就讲述一下如何配置不同的版本的镜像源.在此,我就以网易的镜像源为例. 搜索"网易apt-get源",基本就能搜到以下的内容.作为刚开始使用Ubuntu的笔者,愚蠢的认为这个配置符合所有的版本,结果,就出现了上面说的安装软件和依赖包之间版本

Android使用Gradle统一配置依赖版本

前言 目前的Android开发为了减少编译时间,开发效率,大多都采用模块化,组件化的开发方式. 采用这种方式不可避免的将会用到多个Library. 那么当我们协同开发时,如何处理每个人的版本统一呢? 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gradle使用起来简直太好用了,举个例子,我们想依赖个support-v4包,直接一句话: compile 'com.android.support:support-v4:25.1.0' 但是不知道你们发现一些问题没有?比如以