lnmp 多个php版本共存

反编译极光
• 阅读 5653

lnmp 多个php版本共存

本例(ubuntu系统)已通过lnmp安装好php7.1了,所以后面手动安装php5.6.36。但是为什么需要安装多个版本的PHP?发挥你的小宇宙想象一下吧。

安装PHP5.6.36

下载php5.6.36

wget http://cn.php.net/distributions/php-5.6.36.tar.gz

解压

tar zxvf ./php-5.6.36.tar.gz

配置

./configure \
--prefix=/usr/local/php56 \
--with-config-file-path=/usr/local/php56/etc \
--with-config-file-scan-dir=/usr/local/php56/conf.d \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir=/usr/local/freetype \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--enable-intl \
--with-xsl

如果过程提示错误比如:freetype,就解决这些错误再重新执行配置

先搜索这个名字,看看安装包的具体名字是什么,然后再使用apt-get安装

apt-cache search freetype
apt-get install libfreetype6-dev

执行make

make

我出现了这种错误,recipe for target 'sapi/cli/php' failed,解决方法是直接编辑makefile文件,搜索EXTRA_LIBS,在EXTRA_LIBS= 后面添加-liconv,如:EXTRA_LIBS = ..... -lcrypt -liconv,然后执行make clean,再执行一次make
最后就是make install了

make install

配置php5.6

cp /root/php-5.6.36/php.ini-development /usr/local/php56/etc/php.ini

打开并修改/usr/local/php56/etc/php.ini
查找 mysql.default_socket 改成

mysql.default_socket = /tmp/mysql.sock

查找 mysqli.default_socket 改成

mysqli.default_socket = /tmp/mysql.sock

查看php5.6版本

/usr/local/php56/bin/php -v

PHP 5.6.36 (cli) (built: May  1 2018 16:03:00) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

配置 php-fpm 服务

因为 PHP 7 的服务文件为 php-fpm.service 所以这里用 php56-fpm.service

cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php56-fpm.service

编辑php56-fpm.service,修改

PIDFile=${prefix}/var/run/php-fpm.pid
ExecStart=${exec_prefix}/sbin/php-fpm --nodaemonize --fpm-config ${prefix}/etc/php-fpm.conf

PIDFile=/usr/local/php56/var/run/php-fpm.pid
ExecStart=/usr/local/php56/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php56/etc/php-fpm.conf

/usr/local/php56/etc下添加文件php-fpm.conf
内容为

[global]
pid = /usr/local/php56/var/run/php-fpm.pid
error_log = /usr/local/php56/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php56-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

在/usr/local/php56/var/run中添加一个文件php-fpm.pid,内容为

3353

因为php7的pid为3352,所以这里用3353,这个随意,不要和别的软件冲突就行。

重新载入 systemd

systemctl daemon-reload

可以设置开机启动:

systemctl enable php56-fpm

立即启动 php-fpm

systemctl start php56-fpm

查看php5.6的状态

systemctl status php56-fpm
● php56-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php56-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-01 19:21:52 CST; 26s ago
 Main PID: 3353 (php-fpm)
   CGroup: /system.slice/php56-fpm.service
           ├─3353 php-fpm: master process (/usr/local/php56/etc/php-fpm.conf)                               
           ├─3373 php-fpm: pool www                                                                         
           ├─3374 php-fpm: pool www                                                                         
           ├─3375 php-fpm: pool www                                                                         
           ├─3376 php-fpm: pool www                                                                         
           ├─3377 php-fpm: pool www                                                                         
           ├─3378 php-fpm: pool www                                                                         
           ├─3379 php-fpm: pool www                                                                         
           ├─3380 php-fpm: pool www                                                                         
           ├─3381 php-fpm: pool www                                                                         
           └─3382 php-fpm: pool www                                                                         

May 01 19:21:52 iZ23mzd9hi4Z systemd[1]: Started The PHP FastCGI Process Manager.
May 01 19:22:05 iZ23mzd9hi4Z systemd[1]: Started The PHP FastCGI Process Manager.

查看php7的状态

systemctl status php-fpm
● php-fpm.service - LSB: starts php-fpm
   Loaded: loaded (/etc/init.d/php-fpm; bad; vendor preset: enabled)
   Active: active (exited) since Tue 2018-05-01 14:47:03 CST; 4h 35min ago
     Docs: man:systemd-sysv-generator(8)

May 01 14:47:01 iZ23mzd9hi4Z systemd[1]: Starting LSB: starts php-fpm...
May 01 14:47:03 iZ23mzd9hi4Z php-fpm[771]: Starting php-fpm  done
May 01 14:47:03 iZ23mzd9hi4Z systemd[1]: Started LSB: starts php-fpm.

配置不同的 nginx 站点使用不用的 PHP 版本

/usr/local/nginx/conf下添加一个文件名为enable-php56.conf
内容为

location ~ [^/]\.php(/|$)
    {
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php56-cgi.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

修改域名配置文件中的include enable-php.conf;include enable-php56.conf;

server
    {
        listen 80;
        ...
        include enable-php56.conf;
        ...
    }

测试一下

在各域名目录下添加一个info.php文件测试一下

<?php
phpinfo();
?>
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
ubuntu卸载php7并安装php5.6记录
      ubuntu16.04版本从默认源安装的php版本为7.x版本,我们都知道php7.0已经舍弃了很多旧版本的函数等内容,这对旧系统来说是致命的,那么,我们就有了安装旧版php的需求,而同一主机安装两个版本的php,如果不做配置会报错。那么,我们就需要:一、卸载php7.x;1)如果我们知道在安装php7的时候都安装了那些包及扩
Wesley13 Wesley13
4年前
LNMP架构之环境搭建
本文索引:LAMP架构介绍Mysql的安装PHP的安装Nginx介绍Nginx的安装LNMP架构介绍LNMPLinuxNingxMysqlPHP!lnmp(https://github.com/castielLu/pic/blob/master
Wesley13 Wesley13
4年前
thinkphp+redis实现秒杀,缓存等功能
秒杀是商城常见功能phpredis是最常见的秒杀功能1,安装redis,根据自己的php版本安装对应的redis扩展首先查看phpinfo();php环境信息2,下载redishttps://windows.php.net/downloads/pecl/snaps/redis/https://windows.php.ne
Wesley13 Wesley13
4年前
Ubuntu安装多个版本的Opencv
参考:https://www.cnblogs.com/hxzkh/p/8473190.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhxzkh%2Fp%2F8473190.html)将该博主的某一部分摘录出来\lsdslam
Wesley13 Wesley13
4年前
Ubuntu16.04配置Nginx和Php5.6(Php7.0)环境
由于研究需要,自己搭配个Php5.6和Nginx环境!由于Ubuntu16.04默认Php版本已经升到7.0,因此需要添加5.6版本库才能使用!安装PHP5.6sudoaddaptrepositoryppa:ondrej/phpsudoaptupdatesudoaptinstallph
Wesley13 Wesley13
4年前
swoole入门教程03
环境说明:系统:Ubuntu14.04(安装教程包括CentOS6.5)PHP版本:PHP5.5.10swoole版本:1.7.7stableGithub地址:https://github.com/LinkedDestiny/swooledoc(https://www.oschina.net/action/GoToLink?ur
Stella981 Stella981
4年前
Linux下搭建PHP开发环境,Php
目前PHP项目开发几种比较流行的架构搭建中,LNMP在性能方面是最好的,正因为如此,使得LNMP架构逐渐流行起来,今天,前面提到了Nginx部署,由于项目实际环境的需要,今天就在说一下怎么部署PHP。环境CentOS6.3PHP5.6安装步骤1\.下载并安装PHP:先下载文件到对应的目录,然后解压文件。root@i
Stella981 Stella981
4年前
PHP7安装redis扩展
1、查看自己PHP的版本echophpinfo()查看自己的版本:VC是14,系统是64位的,所以一定要选对版本,因为这个版本我折腾了好久。2、根据自己的PHP版本、编译器的版本以及cpu我的是php是7.0、VC14、X64。附上我的下载链接redis、igbinary的链接:Redis:http://windows.php.n
Stella981 Stella981
4年前
MAC 默认 Apache 和 PHP 环境
1,添加mcrypt扩展:搜索mcrypt:brewsearchmcrypt安装mcrypt:brewinstallmcrypt安装PHP对应版本的mcrypt扩展:brewinstallhomebrew/php/php55mcrypt查找路径:sudofi
Stella981 Stella981
4年前
PHP版本升级后Atom的环境配置
近来PHP7出山,为了领略号称近100%提升的性能,在Mac上用Brew安装了PHP70,过程算顺利,apache也配置完,运行一个页面后见到了php7.0.1的版本号。于是用Atom写段测试代码,发现不对,怎么Atom运行的版本还是5.5?因为Atom运行PHP的话需要安装N个插件,所以首先逐个检查插件的配置,发现linterphp和phpcsf
Stella981 Stella981
4年前
Composer使用
提示:不要忘了经常执行composerselfupdate以保持composer一直是最新版本哦!PHP版本必须是5.4已上版本phpv检测当前php版本linux安装:局部安装1\.进入到自己项目目录:如 cd/home/www/2\.要真正获取Composer,我们需要做两件事。首先安装Compose