首页 > 系统相关 >centos7/centos8 PHP7.2/php7.3/php7.4 以上版本 源码安装 编译

centos7/centos8 PHP7.2/php7.3/php7.4 以上版本 源码安装 编译

时间:2023-04-04 10:25:25浏览次数:51  
标签:-- php7.4 php7.3 devel centos7 源码 found php root


yum update  

1、 安装依赖包

[root@centos7_4 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-servers openldap-clients freetype-devel gmp-devel

2、 下载PHP源码包

[root@centos7_4 ~]# wget http://cn2.php.net/distributions/php-7.2.6.tar.gz

亲测 可以安装php7.4.20   wget http://cn2.php.net/distributions/php-7.4.20.tar.gz

[root@centos7_4 ~]# wget http://cn2.php.net/distributions/php-7.2.6.tar.gz

3、解压压缩包

[root@centos7_4 ~]# tar zxf php-7.2.6.tar.gz -C /usr/local/src/

[root@centos7_4 ~]# cd /usr/local/src/php-7.2.6/

4、 生成配置文件

[root@centos7_4 php-7.2.6]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli --with-pdo-mysql --with-mysql-sock=/usr/local/mysql/mysql.sock --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-curl --with-gd --with-gmp --with-zlib --with-xmlrpc --with-openssl --without-pear --with-snmp --with-gettext --with-mhash --with-libxml-dir=/usr --with-ldap --with-ldap-sasl --with-fpm-user=nginx --with-fpm-group=nginx --enable-xml --enable-fpm  --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-sockets --enable-inline-optimization --enable-maintainer-zts --enable-mbregex --enable-mbstring --enable-pcntl --enable-zip --disable-fileinfo --disable-rpath --enable-libxml --enable-opcache --enable-mysqlnd 

--with-ldap --with-ldap-sasl \            #如果不添加这两项,要是安装zabbix监控时候,会有提示还得需要再次编译,如果不安装zabbix,也可以忽略

 

configure: error: Cannot find ldap libraries in /usr/lib.       #解决方法

[root@centos7_4 php-7.2.6]# cp -frp /usr/lib64/libldap* /usr/lib/    #在重新配置

关于libxml 或者 libxml-2的报错

可能出现的错误

No package 'libxml-2.0' found

configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met:

No package 'libxml-2.0' found

解决方法

yum install libxml2-devel

中途可能需要更新其他的依赖, 确定就可以了

No package 'openssl' found

configure: error: Package requirements (openssl >= 1.0.1) were not met:

No package 'openssl' found

解决方法

yum install openssl-devel

No package 'sqlite3' found

configure: error: Package requirements (sqlite3 > 3.7.4) were not met:

No package 'sqlite3' found

解决方法

yum install sqlite-devel

No package 'libcurl' found

configure: error: Package requirements (libcurl >= 7.15.5) were not met:

No package 'libcurl' found

解决方法

yum install libcurl-devel

Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met

configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found

解决方法

yum install libicu-devel

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

checking whether g++ accepts -g... no
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/data/programs/php-7.4.7':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details

解决方法, 缺少g++库, 安装

yum install gcc-c++

No package 'oniguruma' found

configure: error: Package requirements (oniguruma) were not met:

No package 'oniguruma' found

 

如果启用了--with-mbstring,则需要安装 oniguruma, 因为7.4的正则表达式使用了oniguruma

解决方法

yum install oniguruma oniguruma-devel

No package 'libxslt' found

configure: error: Package requirements (libxslt >= 1.1.0) were not met:

No package 'libxslt' found

--with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件

解决方法

yum install libxslt-devel

No package 'libpng' found

configure: error: Package requirements (libpng) were not met:

No package 'libpng' found

解决方法

yum install libpng-devel

No package 'libjpeg' found

configure: error: Package requirements (libjpeg) were not met:

No package 'libjpeg' found

解决方法

yum install libjpeg-devel

No package 'freetype2' found

configure: error: Package requirements (freetype2) were not met:

No package 'freetype2' found

解决方法

yum install freetype-devel

No package 'libzip' found

configure: error: Package requirements (libzip >= 0.11) were not met:

No package 'libzip' found

解决方法

这里不使用软件仓库中的libzip, 也就是不使用yum install libzip-devel,
因为版本不够, 安装方法看下面一条

Requested 'libzip >= 0.11' but version of libzip is 0.10.1

这是因为软件仓库的libzip版本过低, 需要手动编译安装

复制代码
# 先删除原有的libzip
yum remove -y libzip
# 下载并手动编译安装, 自己下载到合适的位置
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
# 解压
tar -zxvf libzip-1.2.0.tar.gz
# 进入到源码目录
cd libzip-1.2.0
# 配置
./configure
# 编译并安装
make && make install
# 更新依赖路径, centos版本小于8的,一定要执行下面这个命令,不然还是找不到 libzip
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
# 上面一行的代码参考自 https://wujie.me/centos7-3-compile-and-install-php-7-4-1/
复制代码

configure: error: GNU MP Library version 4.2 or greater required

yum -y install gmp-devel 

configure: error: Please reinstall readline - I cannot find readline.h

yum -y install readline-devel

configure: error: Cannot find ldap.h 

yum install openldap openldap-devel  -y

configure: error: Cannot find ldap libraries in /usr/lib 

cp -frp /usr/lib64/libldap* /usr/lib/

configure: error: Package requirements (oniguruma) were not met:  

复制代码
centos   7 :

yum install oniguruma-devel


centos 8:

    1. wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
    2. tar -zxf oniguruma-6.9.4.tar.gz
    3. cd oniguruma-6.9.4
    4. ./autogen.sh && ./configure --prefix=/usr
--------------------------------
此处如果遇到 ./autogen.sh: line 6: autoreconf: command not found

       --> yum  -y  install autoconf automake libtool

--------------------------------
5. make && make install
复制代码

./autogen.sh: line 6: autoreconf: command not found

yum  -y  install autoconf automake libtool

configure: error: Could not find net-snmp-config binary. Please check your net-snmp installation. 

yum -y install net-snmp-devel

 

5、 编译并安装

[root@centos7_4 php-7.2.6]# make

/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'

/usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

make: *** [sapi/cli/php] Error 1

 

[root@centos7_4 php-7.2.6]# vim Makefile      #在以EXTRA_LIBS开头的一行结尾添加‘-llber’

EXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lldap -lgmp -lpng -lz -ljpeg -lz -lrt -lm -ldl -lnsl -lpthread -lxml2 -lz -lm -ldl -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lfreetype -lxml2 -lz -lm -ldl -lnetsnmp -lssl -lssl -lcrypto -lm -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcrypt -llber

[root@centos7_4 php-7.2.6]# make

[root@centos7_4 php-7.2.6]# echo $?    

0

[root@centos7_4 php-7.2.6]# make install

[root@centos7_4 php-7.2.6]# echo $?    

0

6、 配置php配置文件

移动php配置文件的位置,并修改名称

[root@centos7_4 php-7.2.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf

复制php.ini文件

[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/php.ini-production /usr/local/php/etc/php.ini

7、 复制php启动脚本到/etc/init.d/

[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

添加执行权限,添加到启动项并设置卡机启动

[root@centos7_4 php-7.2.6]# chmod +x /etc/init.d/php-fpm

[root@centos7_4 php-7.2.6]# chkconfig --add php-fpm

[root@centos7_4 php-7.2.6]# chkconfig php-fpm on

启动php-fpm

[root@centos7_4 ~]# /etc/init.d/php-fpm start

Starting php-fpm  done

 

[root@centos7_4 ~]# vim /usr/local/nginx/conf/nginx.conf

43         location / {

44             root   html;

45             index  index.php index.html index.htm;

46         }

[root@centos7_4 ~]# service nginx restart     #重启nginx服务

 

编写php探测文件

[root@centos7_4 ~]# vim /usr/local/nginx/html/index.php

<?php

        phpinfo();

?>

[root@centos7_4 ~]# netstat -antup|grep php-fpm

tcp    0    0 127.0.0.1:9000      0.0.0.0:*      LISTEN    128974/php-fpm: mas

 

php-fpm  的启动主要是帮助自己查看  phpinfo()  中是否扩展了 swoole

 

传统的 php-fpm 无法重启,只能杀死进程后。再次启动

killall php-fpm

kill -9 (进程号)

pkill

./php-fpm

标签:--,php7.4,php7.3,devel,centos7,源码,found,php,root
From: https://www.cnblogs.com/yzl042349/p/17285514.html

相关文章

  • Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析
    Sevlet规范:HttpServlet类和HttpServletRequest接口源码解析每博一文案命运总是不如人愿,但往往是在无数的痛苦总,在重重的矛盾和艰辛中,才是人成熟起来。你,为这瞬间的辉煌,忍耐了多少暗淡无光的日月,你会死亡,但你也会证明生命有多强大。一次邂逅,一次目光的交融,就是永远的合二为......
  • flask,cbv分析,模板,请求与响应,session及源码分析,闪现,请求扩展
    内容回顾web框架同步框架django:大而全,有很多内置的app,还有很多第三方appflask:小而精异步框架santic:异步faskapi异步flask框架wsgirefwerkzeug登录小案例注册路由app.router(路径,methods=[请求方式])新手四件套render_template渲染模板根django有区别redirec......
  • 【开源项目】合肥~超经典智慧城市CIM/BIM数字孪生可视化项目—开源工程及源码
     最新消息,数字孪生智慧宁波开源了其数据工程源码和工程,免费送出供大家学习、使用、分享。​智慧宁波实现了一系列全面的功能,如实现长三角经济圈特效、智慧地铁特效、智慧灯杆特性等。这些项目利用数字孪生技术和物联网等先进技术,可以实现精细化管理和智能控制,提高城市管理效率......
  • 线程池之FutureTask、ThreadPoolExecutor源码分析
    前言在我们日常工作中,我们经常会用到多线程的来处理一些异步任务,提高系统吞吐量,但是线程毕竟是一种昂贵的系统的资源,我们不应该频繁的去申请销毁。在java的projectloom还未正式release的时候,我们常用池化的方式来使用线程。所以了解线程池的设计思想能够有助于我们更好的使用它,......
  • 从ReentrantLock 看AQS源码
    ReentrantLock简介ReentrantLock意思为可重入锁,指的是一个线程能够对一个临界资源重复加锁ReentrantLock与Synchronized的区别ReentrantLock支持公平锁和非公平锁,ReentrantLock内部有一个抽象内部类Sync集成于AQS,并且ReentrantLock就是通过Sync的具体实现(FairSync,NonfairSy......
  • Flask快速入门day02(1、CBV使用及源码分析,2、模板用法,3、请求与响应的基本用法,4、sessi
    目录Flask框架一、CBV分析1、CBV编写视图类方法二、CBV源码分析1、CBV源码问题2、补充问题3、总结三、模板1、py文件2、html页面四、请求与响应1、request常用方法2、response常用方法五、session及源码分析1、session的基本使用2、session源码分析六、闪现七、请求扩展Flask框......
  • 【Flask】cbv源码分析 flask模板使用 flask请求与响应 session及源码分析 闪现flash
    目录上节回顾今日内容1cbv分析1.1源码分析2模板2.1app.py2.2index.html3请求与响应4session及源码分析4.1session的使用4.2源码分析4.3session执行原理5闪现6请求扩展练习上节回顾#1web框架 -django大而全-flask小而精-sanic-fastapi-同......
  • flask-day2——cbv源码分析、模版语法、请求与响应、session及源码分析、闪现、请求扩
    目录一、cbv源码分析1.1基于类的视图写法1.2源码分析1.3分析源码,查找不传别名的时候为什么函数名会变成别名1.4flask的路由注册使用装饰器,如果写了一个登录认证装饰器,那么应该放在路由装饰器上还是下?1.5dispatch_request讲解1.6知识点总结二、模板语法2.1py2.2html三、请......
  • Spring事件详解,Spring-Event源码详解,一文搞透Spring事件管理
    文章目录一、Java中事件/监听器编程模型1、Java中Observable/Observer事件监听(1)代码实例(2)Java9新的事件监听2、面向接口的事件/监听器设计模式3、面向注解的事件/监听器设计模式二、Spring事件1、Spring标准事件-ApplicationEvent2、基于接口的Spring事件监听器代码实例3、基于注......
  • Spring注解驱动原理及源码,深入理解Spring注解驱动
    文章目录一、Java注解入门大全二、Spring注解驱动编程发展历程1、注解驱动启蒙时代:SpringFramework1.x@Transactional@ManagedResource2、注解驱动过渡时代:SpringFramework2.x@Repository@Component3、注解驱动黄金时代:SpringFramework3.x4、注解驱动完善时代:SpringFramewo......