记一次编译安装PHP过程

ubuntu 20.04安装PHP 7.4.32

前提

  1. 已经安装了apache2
# apache2-dev 是为了获取apxs,用户PHP编译安装时生成apache的mod
apt install apache2 apache2-dev
  1. 安装了gcc
apt install gcc
  1. 预先安装了autoconf
# 虽然编译安装PHP不需要autoconf,但是后期追加PHP扩展还是需要的(phpize)
apt install autoconf
  1. 使用的是腾讯云服务器(Ubuntu 20.04 LTS),环境已经搭建好了的,其他环境依赖就不一一例举了

下载PHP 7.4.32

进入官网下载

https://www.php.net/downloads

PHP官网

下载PHP 7.4.31

在Linux上下载,我一般喜欢使用wget进行下载,当然也可以使用curl -s save_name url进行下载

sudo su
cd /usr/local/src
# curl -o php-7.4.32.tar.gz https://www.php.net/distributions/php-7.4.32.tar.gz
wget https://www.php.net/distributions/php-7.4.32.tar.gz

解压下载文件

这里我选择的是.tar.gz,也可以选择.tar.bz2和.tar.xz,解压命令如下

  • .tar.gz, .tgz
tar -zxvf php-7.4.32.tar.gz
  • .tar.bz2, .tbz
tar -jxvf php-7.4.32.tar.gz
  • .tar.xz, txz
tar -Jxvf php-7.4.32.tar.gz

安装

进入解压目录,安装检测

依赖
apt install libxml2-dev -y
apt install libsqlite3-dev -y
apt install zlib1g-dev -y
apt install libpng-dev -y
apt install libonig-dev -y
apt install libssl-dev -y
apt install libzip-dev -y

不用安装所有扩展,选择自己要得(ps: 后面可以自己安装扩展的)

cd /usr/local/src/php-7.4.32/

./configure \
--prefix=/usr/local/php7  \
--with-config-file-path=/usr/local/php7/etc \
--with-apxs2=/usr/bin/apxs \
--enable-pcntl \
--enable-gd \
--with-openssl \
--with-mysqli \
--enable-sockets \
--enable-soap \
--enable-mbstring \
--with-curl \
--enable-xml \
--with-zlib \
--enable-fpm \
--with-zip \
--enable-ftp
  • 说明
    • –prefix
      指定安装目录
    • –with-config-file-path
      指定php.ini目录
    • –with-apxs2
      指定apache的apsx目录,生成libphp7.so,一般在/usr/lib/apache2/modules/
    • –enable-pcntl
      进程控制,POSIX默认安装
    • –enable-gd
      gd(Graphics Database)扩展,图形的扩展库
    • –enable-openssl
      openssl,使用composer要安装这个
    • –enable-mysqli
      mysqli的扩展
    • –enable-sockets
      sockets扩展,安装了pcntl必须安装这个
    • –enable-soap
      SOAP扩展可用于编写SOAP服务器和客户机
    • –enable-mbstring
      多字节字符串扩展
    • –enable-curl
      curl
    • –enable-xml
      xml
    • –enable-fpm
      php-cgi
    • –enable-zlib
      读写gzip (.gz)压缩文件,通过使用gzip压缩文件(和未压缩文件,但不使用套接字)的大多数文件系统函数的版本。
    • –enable-zip
      zip扩展
    • –enable-ftp
      ftp

检测报错

可以参考这篇博客:https://www.jianshu.com/p/ec5b225a92b0

  • No package ‘libxml-2.0’ found
apt install libxml2-dev -y
  • No package ‘sqlite3’ found
apt install libsqlite3-dev -y
  • No package ‘zlib’ found
apt install zlib1g-dev -y
  • No package ‘libpng’ found
apt install libpng-dev -y
  • No package ‘oniguruma’ found
apt install libonig-dev -y
  • No package ‘openssl’ found
apt install libssl-dev -y
  • No package ‘libzip’ found
apt install libzip-dev -y

编译

make -j4

安装

make install

复制配置文件到配置文件目录

cp php.ini-development /usr/local/php7/etc/php.ini

可选

安装完成后,会有一条警告,如下:
在这里插入图片描述
似乎是因为:因为之前"./configure"的“--prefix”参数与预期安装的目录不匹配而发出警告,执行相关命令就可以了

apt install libtool-bin -y
libtool --finish /usr/local/src/php-7.4.32/libs

设置环境

上面的步骤已经安装完成了,可以进入到bin目录查看php的版本号

cd /usr/local/php7/bin
./php -v

在这里插入图片描述
锵锵,安装成功啦~
现在配置好环境变量就可以了,执行如下操作即可:

  1. 编辑/etc/bash.bashrc文件,设置环境变量
export PATH=$PATH:/usr/local/php7/bin
  1. 使环境变量生效
source /etc/bash.bashrc
  1. 测试
# 进入家目录
cd ~
pwd
php -v
php -i | grep .ini

在这里插入图片描述

重启apache2

然后,当我们重启apache2后,回报一个不兼容的错误,如下:
在这里插入图片描述
进过百度后知道,原来apache的工作模式不兼容的问题,只要禁用掉mpm_event以及开启mpm_prefork模块就行了,执行以下命令:

a2dismod mpm_event
a2enmod mpm_prefork
systemctl restart apache2
  • 查询启用的所有模块命令
apachectl -tD DUMP_MODULES

在这里插入图片描述
还没有结束,因为这样apache是不会识别php文件,只会将其作为普通文本打开,如下:
在这里插入图片描述
此时,让apache能够识别php文件就可以了,如下:

  • vi /etc/apache2/mods-available/mime.conf
AddType application/x-httpd-php .php

在这里插入图片描述
重启apache2后查看:
在这里插入图片描述
至此,PHP的安装就结束了

可选:启用其他模块

  1. 启用rewrite模块
a2enmod rewrite
  1. 启用headers模块
a2enmod headers
systemctl restart apache2

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值