CentOS7.5 安装PHP7.4.X

编译前准备

新建用户:

userdel www
groupadd www
useradd -g www -M -d /data/www -s /sbin/nologin www &> /dev/null

更新系统软件包,安装编译相关依赖

yum --exclude=kernel* update -y
yum groupinstall -y 'Development Tools'
yum install -y epel-release
yum install -y wget openssl-devel bzip2-devel libffi-devel  sqlite-devel vim gpm-libs oniguruma oniguruma-devel libsodium libsodium-devel xz-devel libxml2-devel libcurl-devel
yum install -y bash-completion bash-completion-extras libicu-devel libjpeg libjpeg-devel  nss_ldap cmake  boost-devel libevent libevent-devel gd gd-devel openjpeg-devel 
yum install -y libgcrypt-devel libpng-devel libgpg-error-devel libxslt-devel cmake libmcrypt-devel libmcrypt  recode-devel recode  

安装高版本libzip

yum remove  -y libzip-devel
yum install -y http://rpms.remirepo.net/enterprise/7/remi/x86_64/libzip5-1.7.2-1.el7.remi.x86_64.rpm
yum install -y http://rpms.remirepo.net/enterprise/7/remi/x86_64/libzip5-devel-1.7.2-1.el7.remi.x86_64.rpm
# 如果上面地址过期了,则到 http://rpms.remirepo.net/enterprise/7/remi/x86_64/ 这个下面找

下载安装

wget https://www.php.net/distributions/php-7.4.1.tar.gz
tar -zvxf php-7.4.1.tar.gz && cd php-7.4.1/
mkdir -p /usr/local/php-7.4.1 && useradd -s /sbin/nologin www

编译参数说明:

在Linux下安装PHP,源代码方式安装,总需要配置很多参数。这里列出常用配置参数,并详细用中文解释说明了。
给大家一些参考:
--prefix=/usr/local/PHP                              #php 安装目录
--with-apxs2=/usr/local/apache/bin/apxs              #表示使用apache2.0以上版本,apxs表示使用的apache1.0版本                                                                                                                              --with-fpm-user=www                                  #指定所属用户                                                                                                   --with-fpm-grop=www                                  #指定所属组
--with-config-file-path=/usr/local/PHP/etc           #指定php.ini位置
--with-MySQL=/usr/local/mysql                        #mysql安装目录,对mysql的支持
--with-MySQLi=/usr/local/mysql/bin/mysql_config      #mysqli文件目录,优化支持
--enable-safe-mode                                   #打开安全模式
--enable-ftp                                         #打开ftp的支持
--enable-zip                                         #打开对zip的支持
--with-bz2                                           #打开对bz2文件的支持                      
--with-jpeg-dir                                      #打开对jpeg图片的支持
--with-png-dir                                       #打开对png图片的支持
--with-freetype-dir                                  #打开对freetype字体库的支持
--without-iconv                                 #关闭iconv函数,种字符集间的转换
--with-libXML-dir                               #打开libxml2库的支持
--with-XMLrpc                                   #打开xml-rpc的c语言
--with-zlib-dir                                 #打开zlib库的支持
--with-gd                                       #打开gd库的支持,7.4 后不再支持这种写法,所以需要改为 --enable-gd
--enable-gd-native-ttf                          #支持TrueType字符串函数库
--with-curl                                     #打开curl浏览工具的支持
--with-curlwrappers                             #运用curl工具打开url流
--with-ttf                                      #打开freetype1.*的支持,可以不加了
--with-xsl                                      #打开XSLT 文件支持,扩展了libXML2库,需要libxslt软件
--with-gettext                                  #打开gnu 的gettext 支持,编码库用到
--with-pear                                     #打开pear命令的支持,PHP扩展用的
--enable-calendar                               #打开日历扩展功能
--enable-mbstring                               #多字节,字符串的支持
--enable-bcmath                           #打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets                          #打开 sockets 支持
--enable-exif                             #图片的元数据支持
--enable-magic-quotes                     #魔术引用的支持
--disable-rpath                           #关闭额外的运行库文件
--disable-debug                           #关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime       #魔术头文件位置

CGI方式安装才用的参数
--enable-fpm                                       #打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI                                   #支持fastcgi方式启动PHP
--enable-force-CGI-redirect                        #同上 ,帮助里没有解释
--with-ncurses                                     #支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl                                     #freeTDS需要用到的,可能是链接mssql 才用到

mhash和mcrypt算法的扩展
--with-mcrypt                            #算法
--with-mhash                             #算法

--with-gmp
--enable-inline-optimization
--with-openssl                               #openssl的支持,加密传输时用到的
--enable-dbase
--with-pcre-dir=/usr/local/bin/pcre-config   #perl的正则库案安装位置
--disable-dmalloc
--with-gdbm                                  #dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte                      #支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap

###  编译PHP的时候慎用 –with-curlwrappers参数

在这里可以用各种各样的参数来自定义 PHP,例如启动哪些扩展功能包的支持等。用./configure --help命令可以列出当前可用的所有参数。

./configure \
--prefix=/usr/local/php-7.4.1 \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-config-file-path=/usr/local/php-7.4.1/etc \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--enable-pdo \
--with-zlib \
--enable-xml \
--enable-session \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-zip \
--with-ffi \
--with-zlib-dir \
--with-openssl \
--enable-gd \
--with-openssl \
--with-mhash \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--with-gettext \
--enable-fileinfo \
--enable-opcache \
--enable-maintainer-zts \
--with-xsl \
--with-sodium \
--enable-tokenizer

所遇问题:

PHP7.4版本,需要对扩展与依赖作出改变,如如常见的GD库扩展,--with-gd就要改成--enable-gd。这些都好说,不好说的是依赖的问题。
Linux安装软件,导致无法安装的原因绝大多数都是依赖包的问题,我安装的是PHP7.4.1,以下就是所遇到的问题及对应的解决方法:

问题一:error: Package requirements (sqlite3 > 3.7.4) were not met
解决方法:
yum install -y sqlite-devel
  问题二:error: Package requirements (oniguruma) were not met
解决方法:
yum install -y oniguruma  oniguruma-devel
如果这两个包安装不了,安装如下依赖库
yum -y install epel-release

编译安装(或升级PHP7.4)所遇到的主要就是这两个问题,对于其他的报错,都是依赖的问题,根据对应的提示安装相应的依赖就行了。
以下是预编译完成后PHP所无法识别的扩展,也就是,这些扩展在预编译的时候就不要选上了:
【警示】以下是不可用选项

configure: WARNING: unrecognized options: 
--with-libxml-dir, 
--with-pcre-regex, 
--with-pcre-dir, 
--with-gd, 
--with-jpeg-dir, 
--with-png-dir, 
--with-freetype-dir, 
--enable-mbregex-backtrack, 
--with-onig, 
--enable-wddx, 
--with-libxml-dir, 
--enable-zip

出现如下表示编译成功

开始正式安装

make && make install

配置PHP环境变量

vim /etc/profile             #打开profile文件增加如下,然后使文件生效
PATH=/usr/local/php-7.4.1/bin:/usr/local/php-7.4.1/sbin:$PATH
source /etc/profile

检查是否安装成功

输入php -v检查是否安装成功,环境变量并生效。

配置PHP-FPM 并启动fpm

cp php.ini-production /usr/local/php-7.4.1/etc/php.ini
cp /usr/local/php-7.4.1/etc/php-fpm.conf.default /usr/local/php-7.4.1/etc/php-fpm.conf
cp /usr/local/php-7.4.1/etc/php-fpm.d/www.conf.default /usr/local/php-7.4.1/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

# 启动PHP-FPM 
/etc/init.d/php-fpm start        #启动
/etc/init.d/php-fpm restart      #重新启动
/etc/init.d/php-fpm reload       #重新加载
/etc/init.d/php-fpm stop         #停止
/etc/init.d/php-fpm status       #查看状态

# 检测端口是否监听,PHP默认端口是9000 
ss -ntulp | grep php-fpm

最后安装其他扩展:

wget http://pecl.php.net/get/swoole-4.4.23.tgz
wget http://pecl.php.net/get/mongodb-1.8.2.tgz
wget http://pecl.php.net/get/mongodb-1.5.4.tgz
wget http://pecl.php.net/get/redis-4.3.0.tgz
wget http://pecl.php.net/get/redis-5.2.2.tgz

完成。

你可能感兴趣的:(CentOS7.5 安装PHP7.4.X)