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

相關文章
相關標籤/搜索