Linux上安装PHP

环境:centos7  nginx  php7.2

一、安装前准备

  1. 检查是否已安装PHP

  yum安装检查:yum list installed |grep php

  rpm安装检查:rpm -qa |grep php

  2. 安装php所需的依赖库

  1)zlib  zlib-devel      #数据压缩解压函数库

  2)libxml2  libxml2-devel    #libxml2是一个c语言的xml程序库,可以简单的对xml进行各种操作,并且支持xpath查询,以及部分支持xslt转换等功能。

  3)libxslt  libxslt-devel      #如果不安装libxslt-devel会提示找不到xslt.config文件,xslt是转换xml到其他格式的扩展。

  4)openssl  openssl-devel    #安全套接字层密码库

  5)libjpeg  libjpeg-devel  libpng  libpng-devel  ...  #php的gd库所需。

6)freetype  freetype-devel   #免费开源的且可移植的字体引擎,提供统一的接口访问多种字体格式,这两个都是gd库的依赖软件,所以如果没有安装,或者版本太低,在安装php时设定的是安装gd库则 会报错,另外不安装-devel也是会报错的,因为编译扩展的时候会缺少ft2build.h文件。

  7)gd  gd-devel         #gd是php处理图形的扩展库

  8)curl  curl-devel        #命令行工具,通过指定的URL来上传或下载数据

  9)gcc gcc-c++          #gcc编译器用来编译c,c++源码包(一般系统自带,最小化安装怎没有)

  10)glibc glibc-devel       #C运行库(一般系统自带)

  11)glib2 glib2-devel       #C语言函数库(一般系统自带)

  12)libaio libaio-devel  #和异步调用有关

  13)ncurses      #是一个Linux系统下的图形支持的函数库,字符终端处理库

  14)m4        #是一个宏处理器.将输入拷贝到输出,同时将宏展开

二、下载php源码包

  地址:https://www.php.net/downloads.php

  解压源码包,并进入到解压的文件目录

三、PHP扩展库的安装方式

  1. 静态编译:安装php时通过--with --enable 将扩展库和php一起编译安装到php内核,这样速度更快(php源码包有php官方支持的所有扩展库)

  2. 动态编译:已安装好php后,还要增加其他扩展(一般是第三方扩展:redis,mecache,mongodb),使用php的phpize工具编译安装生成xxx.so文件,在php配置文件中引入,使扩展生效

  php源码包内有所有php官方支持的扩展库,但并不是所有的扩展库都会编译安装

  php默认会编译安装的扩展库(直接安装php,不进行任何配置)

  Core ctype date dom fileinfo filter hash iconv json libxml pcre PDO pdo_sqlite Phar posix Reflection session SimpleXML SPL sqlite3 standard tokenizer xml xmlreader xmlwriter

  php默认不会编译安装的扩展库

  (1)以--enable-xxx方式开启

    zip fpm inline-optimization  exif bcmath mbstring debug

  (2)以--with-xxx方式开启

    gd  curl  bz2 zlib mysqli openssl  xmlrpc gmp  xsl 

三、编译配置(此步用来生成编译时需要的文件)

  ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --with-openssl  --with-curl  --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-fpm-user=php --with-fpm-group=php --enable-mbstring  --enable-exif --with-libzip

  1. 路径设置

  --prefix=/usr/local/php  #php的安装路径

  --with-config-file-path=/usr/local/php/etc   #php配置文件的路径(php.ini,php-fpm.conf)

  --prefix=/usr/local/php7.2          #php安装路径

  2. 编译扩展库时需要依赖第三方类库的php扩展库

  --with-xxx=path[=path]

  若依赖是用rpm,yum 安装在linux默认位置,则不用指定。若依赖是编译安装在其他位置,则要指定依赖包的安装路径

  如编译php的mysqli,pdo-mysql扩展时使用php源码自带的mysqlnd(文件在解压的源码文件根目录)驱动

  --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

  3. 指定php扩展库运行时需要的依赖包位置

  --with-xxx-dir[=path]  #不带路径在默认安装位置查找(相关的包要在Linux上已安装)

  如gd库运行时需要的jpeg,png,freetype,zlib库

  --with-jpeg-dir --with-webp-dir  --with-png-dir  --with-zlib-dir --with-freetype-dir

  4. 编译扩展库时不需要依赖第三方类库的php扩展库(如ftp,zip,libxml)

  --enable-xxx  --enable-ftp  

  5. 某些默认会编译安装的库不让它编译(如编译时占用内存很大的库:fileinfo)

  --disable-xxx   --disable-fileinfo 

四、编译

  make   #用来编译生成php,php扩展安装的可执行文件(安装程序)和所需的文件

  make test   #检测编译是否正确,只有编译都正确后再安装以后才不会有莫名的错误

五、安装

  make install  #执行编译生成的安装程序

六、安装后配置

  1. 加入php.ini配置文件

   在解压的php源码包中有2个php的配置文件php.ini-development (用于开发环境) php.ini-production(用于产品环境),根据需要选择一个放到php配置文件目录,并重命名为php.ini

   php配置文件目录默认位置:/usr/local/php/etc (php安装目录/usr/local/php)

  2. 加入php-fpm.conf配置文件:

   cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

  3. 加入www.conf配置文件:

   cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

   完成后php就可以作为一个独立的模块运行了

七、php-fpm服务控制

  1. 启动

  /usr/local/php/sbin/php-fpm    #也可以设置环境变量

  2. 查看启动信息

  ps aux | grep -c  php-fpm   #查看php-fpm进程数

  ps -ef |grep php-fpm

  3. php-fpm 命令

  -m  #查看已启用的扩展

  -v  #查看版本信息

  -i  #查看php信息

  4. 停止php-fpm

  kill -INT php-fpm进程id  #

  kill -USR2 php-fpm进程id  #

  kill -9 php-fpm进程id  

  

完整配置:
./configure --prefix=/usr/local/php7.2 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash 
--with-openssl --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-mbstring --enable-sockets
--with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-xml --with-freetype-dir --enable-gd-jis-conv
--enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc
--with-gettext --enable-exif --with-readline --with-recode --enable-fpm --disable-fileinfo   注意:服务器内存不足1G,配置项加上:--disable-fileinfo  #默认会开启,禁用掉它
  或者开启swap虚拟内存

    --with-库名      #要编译安装该扩展库

    --without-库名    #用于默认安装的php扩展库进制安装

    --with-库名=filepath   #表示在编译生成这个库时需要的某个库或工具的路径

    --with-mysqli=mysqlnd --with-pdo-mysqli=mysqlnd   #编译mysqli,pdo_mysqli扩展是用最新的MySQL驱动mysqlnd

    --with-gd2    #gd2.0  php图片处理用到的库

    --with-freetype   #全真字体库  

    --with-xsl     #libxml2的扩展,用于支持xstl文件 

    --with-xmlrpc   #处理xml请求的php扩展库 

    --with-libxml2   #解析XML文档的函数库,编译安装该库需要libxml(--with-libxml-dir)

    --with-bz2     #支持bz2文件处理的php扩展库

  --enable-zip  #启用zip模块,使php支持对zip文件的处理 

  --enable-fpm  #php-fpm是PHP专用的fastcgi管理器

  --enable-fileinfo  #获取文件真实MIME类型的模块

  --enable-bcmath  #图片大小调整模块,gd改变图片尺寸需要

  --enable-exif    #图片元数据支持,gd库需要

  --enable-gd-jis-conv  #

  --enable-mbregx  #多字节正则字符串支持(中文字符串正则)

  --enable-ftp    #

  --enable-mbstring  #多字节字符串支持(中文字符串准确计算长度)

  --prefix=路径         #设置php的安装路径

  --enable-xxx          #启用某个模块,php源码内置的模块用这个开启

  --without-xxx         #不包含某个包的支持

  --disable-xxx         #禁用某模块

  --with-apxs2=/usr/local/apache/bin/apxs   #构建共享Apache2.0模块,后面路径是Apache的apxs工具的路径,要先安装apxs

  --with-MySQL=/usr/local/mysql       #

  --with-webp-dir  

  --with-jpeg-dir     #打开对jpeg图片的支持

  --with-png-dir     #打开对png图片的支持

  --with-gd         # 打开gd库的支持

  --with-freetype     #打开对freetype字体库的支持

  --enable-bcmath    #图片大小技术调整支持

  --enable-sockets    #  

  --enable-gd-jis-conv  

  --enable-gd-native-ttf   #画图字体库支持,php7.2开始不支持 

  --with-xsl        #打开xsl支持,是xml2库的扩展

  --with-gd        #打开libxml2库的支持

  --with-xmlrpc      # 打开xml-rpc的c语言

  --enable-xml

  --enable-libxml

  --with-bz2             #打开对bz2文件的支持

  --enable-zip            # 支持php对zip压缩包处理

  --with-zlib            # 包含压缩库,文件压缩与解压基本库

  --with-libzip           #包含libzip库

  --with-pcre-regx    #正则表达式支持(utf8 ascii)

  --enable-mbregx    #多字节正则字符串支持

  --enable-mbstring    #多字节字符串的支持(utf8mb4)

  --enable-fpm    # 启用fpm可执行文件的构建,php作为一个独立的进程运行

  --with-fpm-user=www  #php-fpm进程的用户名

  --with-fpm-group=www  #

  --enable-fastCGI  

  --enable-force-CGI-redirect

  --enable-pcntl   #php扩展,支持php的多线程操作

  --with-tidy    #php整理和修复html打工具(相关包:tidy tidy-devel php-didy libtidy libtidy-devel)

  --with-gmp    

  --with-iconv    #字符编码转换函数库

  --enable-inline-optimization  #优化线程,给php整体做性能优化处理用

  --enable-opcache    #缓存支持

  --enable-ftp        #打开ftp服务

  --with-pear        #php扩展和应用程序库,包含许多有用的类

  --with-openssl      #加密传输支持,https 

  --with-ncurses                   #支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库

  --with-mysqli=mysqlnd     #

  --with-pdo-mysql=mysqlnd   #

  --disable-rpath  #关闭额外运行库

  --enable-magic-quotes  #魔术引用

  --enable-phpdbg  #启用phpdgb调试模块,是一个php的SAPI模块

  --disable-debug   #关闭debug调试

  --enable-debug  #开启,开发环境要的

  --with-pcre-dir=/usr/local/bin/pcre-config  #正则库安装位置

  --with-config-file-path=/usr/local/php/etc   #指定php.ini位置

  

 

  

原文地址:https://www.cnblogs.com/fanshehu/p/11837852.html