PHP7.4之编译安装
虽然之前写过很多编译安装PHP的文章, 但是隔段时间还是会重新安装一些PHP的版本,再次记录一下
1. 下载安装编译工具
yum groupinstall 'Development Tools'
2.安装依赖包
yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel
3. 下载并解压PHP7.4
wget http://mirrors.sohu.com/php/php-7.4.0.tar.gz
# 解压
tar -zxvf php-7.4.0.tar.gz cd php-7.4.0
4. 新增用户和用户组
groupadd www useradd -g www www
5. 生成编译文件
./configure \
--prefix=/usr/local/php74 \
--with-config-file-path=/etc \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-freetype-dir \
--enable-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png-dir \
--with-jpeg-dir \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-bz2 \
--with-mhash \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--with-zip \
--enable-fpm
注意:有些编译项需要进行修改可以通过./configure --help 查看具体的项
./configure --prefix=/usr/local/php74 --with-config-file-path=/usr/local/php74/etc --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --enable-fpm
6. 编译安装
make && make install -j 2 -j 指定执行的进程数
7.安装成功之后,设置环境变量
vim /etc/profile 添加
PATH=$PATH:/usr/lcoal/php74/bin
export PATH 立即生效
source /etc/profile
8. 测试查看PHP版本
php -v 创建php-fpm软链接
ln -s /usr/local/php74/sbin/php-fpm /usr/local/php74/bin/php-fpm php-fpm -v
9.配置
#将源码中的配置文件复制到PHP的配置文件中 cp php.ini-production /usr/local/php74/etc/php.ini #将PHP目录中的php-fpm配置文件进行修改
cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf
10.添加php-fpm启动项
#将PHP源码中的php-fpm启动文件加入到服务自启动文件中
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
11.php-fpm服务化
centos7 已经使用systemctl来进行服务的管理,这里我们也使用systemctl来对php-fpm进行管理
修改php-fpm.conf文件
打开pid=/var/run/php-fpm.pid cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm74.service ln -s /usr/lib/systemd/system/php-fpm74.service /usr/lib/systemd/system/php-fpm.service systemctl daemon-reload systemctl enable php-fpm
php-fpm.service文件内容:
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target [Service]
Type=simple
PIDFile=/usr/local/php74/var/run/php-fpm.pid
ExecStart=/usr/local/php74/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php74/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID PrivateTmp=true
[Install]
WantedBy=multi-user.target
停止之前启动的php-fpm, 使用systemctl启动php-fpm
systemctl start php-fpm.service
12.在使用的时候发现zip扩展没有安装,现在需要添加扩展
在PHP源代码包中,我的源码路径:/opt/php-7.4.0/, 需要进去到zip扩展包中cd /opt/php-7.4.0/ext/zip
#生成配置文件
phpize ./configure --with-php-config=/usr/local/php74/bin/php-config --with-zip make && make install
在配置文件中开启扩展即可 php.ini
常见错误:
1. error: Package requirements (sqlite3 > 3.7.4) were not met
yum install libsqlite3x-devel -y
2.error: Package requirements (oniguruma) were not met
yum install oniguruma-devel -y
3. 访问nginx无法解析PHP文件
server {
listen 8081;
server_name localhost;
index index.html index.php;
root /data/www; access_log /data/logs/www.access.log main;
error_log /data/logs/www.error.log;
location / {
if (!-e $request_filename) {
rewrite ^/(.*) /index.php last;
}
} location ~ .*\.(php|php5)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 这里注意需要进行修改
include fastcgi_params;
} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
3. configure: error: Package requirements (libzip >= 0.11) were not met: No package 'libzip'
libzip 版本太低了
编译安装,指定PKG_CONFIG_PATH,上面报错中其实有提示信息,让我们考虑调整PKG_CONFIG_PATH环境变量。
下面是详细步骤: # 先卸载已有
yum remove libzip
# 然后安装
wget https://libzip.org/download/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install 装完了之后找一下/usr/local/lib下有没有pkgconfig目录,有的话执行命令export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"指定PKG_CONFIG_PATH。
到这里问题解决!
4. 安装扩展的时候,
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment
安装autoconf yum install -y autoconf
PHP7.4之编译安装的更多相关文章
- php7 redis扩展编译安装
提示:php7版本不支持redis2点几的扩展 上正文: wget -c https://github.com/phpredis/phpredis/archive/php7.zip unzip php ...
- php7源码编译安装
以下以CentOS 7.2为例,安装php的运行环境,首先打开php官网http://php.net/点击导航栏的Downloads进入下载页面:http://php.net/downloads.ph ...
- centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展
centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...
- 编译安装PHP7及扩展
一.编译安装PHP 1. 下载源码包并解压 源码包地址:http://php.net/downloads.php 下载源码包 当前PHP最新本门是7.2.9,下载 php-7.2.9 源码包 wget ...
- centos7编译安装LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常见问题报错及解决方法
LNMP的安装与配置 nginx-1.16.0安装及配置: 第一步:前往官网下载nignx源码包 下载完毕后上传至服务器(先安装lrzsz) yum -y install lrzsz 安装完毕后执行: ...
- linux centos编译安装php7.3
php7.2的编译安装参考:https://www.cnblogs.com/rxbook/p/9106513.html 已有的之前编译的旧版本php: mv /usr/local/php /usr/l ...
- CentOS7编译安装php7.1配置教程详解
这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...
- 一个神奇的PHP框架:Phalcon 之编译安装
前言 CentOS7下升级PHP到最新版本以及编译安装phalcon框架,看相关文档无数遍,自己尝试编译安装之后才理解的更深,编译步骤以及碰到的问题做个简单的记录 php-7.0.11编译安装 1.下 ...
- CentOS 7.1编译安装PHP7
原文: https://typecodes.com/web/centos7compilephp7.html?utm_source=tuicool&utm_medium=referral 1 创 ...
- 编译安装PHP7并安装Redis扩展Swoole扩展
编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么 ...
随机推荐
- linux磁盘分区之后,lsblk没有显示
可以看出 fdisk 创建一个 sda4 的分区 并保存退出, 但是 不管是使用 fdisk -l ,还是 lsblk 都无法显示出来, 那么导致问题的原因,主要是因为新创建了分区之后,系统没有重 ...
- ChatGPT介绍与使用场景
ChatGPT是OpenAI开发的一款基于GPT-3和GPT-4的人工智能聊天机器人."GPT"代表的是"Generative Pre-trained Transform ...
- Redis、Nginx、SQLite、Elasticsearch等开源软件成功的原因及他们对IT技术人员的启示
引言 这些年在自研产品,对于如何做好产品进行了一些思考.随着开源软件的蓬勃发展,许多开源项目已经成为IT行业的核心组成部分.像Redis.Nginx.SQLite.Elasticsearch这些知名的 ...
- SQL Server – 基本操作 Table 和 Column
前言 日常都是用 EF Core 来管理 Database, 偶尔也用 Management Studio, 就是很少手写 Command. 虽然网上一拉就有很多, 但是每次写单侧都要到处找还是挺烦的 ...
- opencascade源码学习之HLRAlgo包 -HLRAlgo
类 HLRAlgo 前言 在给定的投影中,为了达到工业设计.图纸需要的精度,可以删除隐藏的线条.为此,隐藏 线路移除组件提供两个算法: HLRBRep_Algo和HLRBRep_PolyAlgo. 这 ...
- 从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- CTF中特别小的EXE是怎么生成的
我们在打CTF时候,出题的爷爷们给出的exe都很小 就10k左右,有的甚至就5k,那时候我很郁闷啊.现在我也能了啊哈哈 不多bb按如下操作: 我们来看看正常的release生成的代码 #include ...
- std::vector::reserve
std::vector::reserve 函数在 C++ 中用于预分配内存,避免在元素增加时多次重新分配内存,从而提高性能. 它最常用于需要频繁向 vector 中添加元素,并且可以预估容器的最终大小 ...
- wpf之样式
在Window.Resources中书写样式 : <Window.Resources> <Style TargetType="Button" > </ ...
- 解决 -Code 安装似乎损坏。请重新安装
问题: 1. 安装插件 fix VSCode Checksums 2. ctrl+shift+P打开命令面板 3. 输入 Fix Checksums: Apply 4. 重新启动VSCode