zoukankan      html  css  js  c++  java
  • linux多版本php安装+采坑指南

    最近在调试php程序时遇到遇到个php版本带来的bug,如图所示

     switch语句中的continue要改成break,或者用continue2代替,每次调试都要改下别人的代码,又不敢提交,这个问题的原因是别人还在用7.1.x的版本,而我装的是7.3.8,据传后来7.3的版本中这个bug修复了,索性我就直接换成跟线上保持一致的版本

    下面开始在linux上安装7.1.5版本

    下载安装php

    #下载
    wget https://www.php.net/distributions/php-7.1.5.tar.gz
    #解压
    tar -zxvf php-7.1.5.tar.gz
    cd php-7.1.5
    #安装
    ./configure --prefix=/usr/local/php7.1 --with-config-file-path=/usr/local/php --enable-mbstring --with-openssl --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl
    make && make install

    由于之前安装过一个php版本,依赖都是安装好的,上面的步骤都还顺利

    安装依赖库

    php依赖插件可通过 https://pecl.php.net  下载

    以redis为例

    wget https://pecl.php.net/get/redis-5.2.0.tgz
    tar -zxvf  redis-5.2.0.tgz
    cd redis-5.2.0
    /usr/local/php7.1/bin/phpize
    ./configure --with-php-config=/usr/local/php7.1/bin/php-config
    make && make install

    在php.ini 添加依赖

    vim  /usr/local/php7.1/etc/php.ini

     一般添加在module下

    ;extension_dir="/usr/local/php7.1/lib/php/extensions/no-debug-non-zts-20160303"  #取决于你的依赖编译后的目录,这行也可注释掉
    [redis]
    extension="redis.so"

    安装xdebug

      如果要断点调试php代码需安装xdebug

      下载地址 https://xdebug.org/download

      编译步骤同上

    vim  /usr/local/php7.1/etc/php.ini

    一般添加在文件最底部

    [XDebug]
    zend_extension="xdebug.so"
    xdebug.remote_port= 8888  #xdebug 监听的端口
    xdebug.remote_enable = 1
    xdebug.remote_autostart = 1
    xdebug.remote_handler = dbgp
    xdebug.remote_host= 10.90.xx.xx #你的服务ip 用于远程调式

    配置php-fpm

    #重命名php-fpm下的www.conf
    cd /usr/local/php7.1/etc/php-fpm.d
    cp www.conf.default www.conf
    
    #重命名 php-fpm.conf
    cd /usr/local/php7.1/etc
    cp php-fpm.conf.default php-fpm.conf

    配置更多的php-fpm 进程(提高并发)

      vim php-fpm.conf 在末尾加上

    pm.max_children = 100
    pm.start_servers = 30
    pm.min_spare_servers = 20
    pm.max_spare_servers = 100
    pm.max_requests = 500

    让不同的版本的php-fpm监听不同端口

      vim /usr/local/php7.1/etc/php-fpm.d/www.conf

      listen = 127.0.0.1:9001  #监听 9001端口

    启动php-fpm

    service php-fpm start   #(restartstop)  启动、重启、停止,一般服务器上只有一个php版本使用可以这么玩

    多个版本的话你就不可以这么玩了

    #杀死所有的fpm进程
    killall php-fpm  
    #启动指定版本的php-fpm
    /usr/local/php7.1/sbin/php-fpm

    #当然也可指定php配置文件和fpm配置文件
    /usr/local/php7.1/sbin/php-fpm -c /usr/local/php7.1/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

    遇到的坑

    1、我开phpinfo 中明明可以看到 我安装的依赖 如redis ,但是 php -m中看不到,web请求可以调用 redis,php 执行脚本 找不到 Redis类

    解:  使用 php --ini 查看配置文件目录

     如果 Loaded Configuration File: (none) 把 php.ini 文件复制一份到上面的默认目录下(/usr/local/php7.1)即可 

    反之php -m 中有安装的模块,web请求找不到该模块,也是同样道理

     总之:启动的php-fpm 和本地的php 可能不是同一份 php.ini ,笔者用默认的命令,不指定php.ini  只在 /usr/local/php7.1中维护一份 php.ini文件

  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/xbblogs/p/13056039.html
Copyright © 2011-2022 走看看