CentOS 安装 PHP7.4.X

参考大佬文章:CentOS 安装 PHP7.4.X

编译前准备

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.9.2-3.el7.remi.x86_64.rpm
yum install -y http://rpms.remirepo.net/enterprise/7/remi/x86_64/libzip5-devel-1.9.2-3.el7.remi.x86_64.rpm 

编译安装源码

PHP官网下载PHP源码

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

如果报错
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

操作成功结果:


image.png

安装

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
检查是否安装成功

image.png

配置PHP-FPM

[root@php php-7.4.1]# pwd
/root/php-7.4.1

把所需的几个配置文件放到需要的位置

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       #查看状态

检测端口是否监听

ss -ntulp | grep php-fpm

演示YUM安装PHP7版本

1、安装前准备

更新系统软件仓库不更新内核,安装开发工具包

yum --exclude=kernel* update -y
yum groupinstall -y  'Development Tools'

2、添加epel第三方依赖库,安装YUM源

yum -y  install epel-release yum-utils
rpm  -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
rpm  -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

3、安装PHP相关依赖库和模块

yum install  -y  --enablerepo=remi --enablerepo=remi-php74 mod_php php-gd* php php-opcache php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-fpm
yum install  -y  --enablerepo=remi --enablerepo=remi-php74 php-cli php-redis php-pecl-mcrypt php-process php-devel php-pear
yum install  -y  vim libevent-devel libmcrypt-devel libxml2 libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libxslt-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib openssl openssl-devel pcre pcre-devel zlib zlib-devel wget net-tools

4、检查YUM安装是否成功

安装完,执行如下命令:

php --version                      #查看版本
php -m                             #查看安装模块,需要用到的模块,没有安装的需要YUM安装
systemctl enable --now php-fpm     #设置开机启动,并启动。
ss -ntulp | grep php-fpm

优化PHP

1、调整PHP-FPM文件

vim /etc/php-fpm.conf
log_level = error # 指定要记录的php-fpm日志级别
rlimit_files =  32768  # 为主进程设置打开文件的限制,虚拟机无法设置。
events.mechanism = epoll # 指定事件驱动模型

2、调整PHP.ini文件

隐藏后端使用的真正脚本类型,扰乱入侵者的渗透思路,另外,切记不要把敏感数据直接明文存在session中,有泄露风险。

vim /etc/php.ini
error_reporting = E_WARING & ERROR #设置php的错误报告级别,只需要报告警告和错误即可
error_log = /var/log/php_errors.log #指定php错误日志存放位置
log_errors_max_len =  2048  #指定php错误日志的最大长度
expose_php = off #隐藏php的详细版本号
session.name = JSESSIONID #表示jsp程序,php的则是PHPSESSID

修改完配置文件需要重新启动才可以生效

systemctl restart php-fpm
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容