前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Linux服务器(ubuntu 16)上部署多套PHP环境

在Linux服务器(ubuntu 16)上部署多套PHP环境

作者头像
子勰
发布2018-05-22 15:55:34
1.4K0
发布2018-05-22 15:55:34
举报
文章被收录于专栏:子勰随笔子勰随笔

近期终于忍痛将所有的代码从SAE切换到了个人的vps,部署过程中发现,ubuntu 16默认支持的PHP版本为PHP 7,但是由于本人的PHP写的比较早,用到了mysql相关的内容,因此为了降低成本,不得不安装PHP 5.X系列。经过一番折腾终于解决问题,这里附上对应的过程。

最终版本

  • 服务器: $ cat /proc/version
  • Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016
  • $ lsb_release -a
  • No LSB modules are available.
  • Distributor ID: Ubuntu
  • Description: Ubuntu 16.04.1 LTS
  • Release: 16.04
  • Codename: xenial
  • nginx版本: $ nginx -v nginx version: nginx/1.10.1
  • 最终安装PHP版本: $ /usr/bin/php5.6 -v
  • PHP 5.6.28-1+deb.sury.org~xenial+1 (cli)
  • Copyright (c) 1997-2016 The PHP Group
  • Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
  • with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
  • with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
  • $ /usr/bin/php7.0 -v
  • PHP 7.0.13-1+deb.sury.org~xenial+1 (cli) ( NTS )
  • Copyright (c) 1997-2016 The PHP Group
  • Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
  • with Zend OPcache v7.0.13-1+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies
  • with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans

彻底卸载原有PHP及依赖

  • 卸载所有相关模块 $ sudo dpkg -l | grep php | awk '{print $2}' | sudo xargs apt-get remove
  • 删除关联 $ sudo find /etc -name "*php*" | xargs rm -rf
  • 清除残留信息 $ sudo dpkg -l |grep ^rc|awk '{print $2}' | sudo xargs dpkg -P

安装新版本PHP

  • 安装PHP及相关依赖 $ sudo add-apt-repository ppa:ondrej/php
  • $ sudo apt-get update
  • $ sudo apt-get install php7.0 php5.6 php-pear php-xdebug php5.6-xml php5.6-json php5.6-mbstring php5.6-mysql php5.6-readline php-gettext libapache2-mod-php5.6 libapache2-mod-php7.0 php-memcache memcached php-memcached
  • 切换PHP版本 $ sudo a2dismod php7.0 ; sudo a2enmod php5.6 ;

修改nginx配置

这一步主要是修改nginx的配置中关于server相关配置中的fastcgi_pass,需要结合服务器的配置做对应的修改。某个host的配置修改后如下:

代码语言:javascript
复制
server {
	listen 80;
	listen [::]:80;

	server_name example.com;

	root /example/com;
	index index.html index.php;

	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
            fastcgi_param SCRIPT_FILENAME /Users/zixie/web/show/1/$fastcgi_script_name;
    }
}

部分设备可能文件目录略有不同,可以通过find来找到对应的文件目录

代码语言:javascript
复制
$ sudo find / -name php5.6-fpm.sock
/run/php/php5.6-fpm.sock

重启php-fpm

修改配置完成以后,重启php-fpm,命令如下

代码语言:javascript
复制
$ sudo service /usr/sbin/php-fpm5.6 restart

部分设备可能安装目录略有不同,可以通过whereis来找到对应的安装目录

代码语言:javascript
复制
$ whereis php-fpm
php-fpm: /usr/sbin/php-fpm5.6

重启nginx

当php-fpm重启以后,就可以重启nginx,nginx重启以后,即可生效

代码语言:javascript
复制
$ sudo systemctl restart nginx

功能验证

当所有模块都已经OK以后,可以通过一个简单的PHP文件来检查模块安装是否OK,配置是否正确。参考如下:

代码语言:javascript
复制
<?php
ini_set('display_errors', true);
error_reporting(E_ERROR);
// 测试mem
$memLink = new Memcache;
$memLink->connect('127.0.0.1', '11211');
$memLink->set("testkey","testValue",0,3600*24);
var_dump($memLink->get("testkey"));
//测试mysql

$link = mysql_connect('localhost', 'user', 'password');
mysql_select_db('dbname', $link);
mysql_query("set names utf8");
$query = "select * from t_table";
$result = mysql_query($query,$link);
printf("Select returned %d rows.\n", mysql_num_rows($result));

//测试XML
$note=<<<XML
<note>
<to>temp@bihe0832.com</to>
<from>blog@bihe0832.com/from>
<heading>Test</heading>
<body>This is a test e-mail</body>
</note>
XML;
$xml=simplexml_load_string($note);
print_r($xml);

//测试json
$testArray = array();
$testArray["name"] = "zixie";
$testArray["mail"] = "temp@bihe0832.com";
var_dump($testArray);
$testJson = json_encode($testArray);
var_dump($testJson);
?> 

以上代码对应github地址:https://github.com/bihe0832/MyWeb/blob/master/testPHP/index.php

其他技巧

怎么查看当前PHP生效的配置

  • 使用phpinfo
  • 命令行查看 $ php -i | grep "php.ini"
  • Configuration File (php.ini) Path => /etc/php/5.6/cli
  • Loaded Configuration File => /etc/php/5.6/cli/php.ini
  • $ php -i | grep "display_error"
  • display_errors => Off => Off
  • xdebug.force_display_errors => Off => Off
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最终版本
  • 彻底卸载原有PHP及依赖
  • 安装新版本PHP
  • 修改nginx配置
  • 重启php-fpm
  • 重启nginx
  • 功能验证
  • 其他技巧
    • 怎么查看当前PHP生效的配置
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档