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文件

  • 相关阅读:
    asp.net+ tinymce粘贴word
    jsp+ tinymce粘贴word
    jsp+ ueditor word粘贴上传
    php+ ueditor word粘贴上传
    asp.net+ueditor word粘贴上传
    word写博客
    【转】如何使用离线博客发布工具发布CSDN的博客文章
    用word发布CSDN文章
    用word发CSDN blog,免去插图片的烦恼
    如何实现word上传服务器
  • 原文地址:https://www.cnblogs.com/xbblogs/p/13056039.html
Copyright © 2011-2022 走看看