linux多版本php安装+采坑指南

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

 

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

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

下载安装phpmysql

#下载 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版本,依赖都是安装好的,上面的步骤都还顺利linux

 

安装依赖库

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

以redis为例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 添加依赖sql

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

 通常添加在module下服务器

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

 

安装xdebug

  若是要断点调试php代码需安装xdebugphp7

  下载地址 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   #(restart\stop)  启动、重启、中止,通常服务器上只有一个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

 

遇到的坑

一、我开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文件

相关文章
相关标签/搜索