跳到主要内容
方的代码随记
返回

PHP 安装的四种方式

更新于:

yum 方式(CentOS 7 + PHP 8.0)

#!/bin/bash
# 脚本名称:php-install.yum.sh
# 执行权限:chmod +x php-install.yum.sh

# 安装 epel 源
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装 remi 源
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 安装 yum 源管理工具
yum install -y yum-utils
# 允许仓库
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable   remi-php80
# 安装 PHP 组件
yum install -y php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring \
  php-curl php-xml php-pear php-bcmath php-json php-redis --skip-broken
# 安装 php-fpm 进程管理器
yum install -y php-fpm

源码方式(PHP 7.4.30)

#!/bin/bash
# 脚本名称:php-install.source.sh
# 工作目录:/usr/local/src   安装目录:/usr/local/php

# 解决依赖
yum install -y libxml2 libxml2-devel
yum install -y openssl openssl-devel
yum install -y curl curl-devel
yum install -y sqlite-devel

cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.30.tar.gz
tar -zxvf php-7.4.30.tar.gz
cd php-7.4.30
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc \
  --with-fpm-user=php-fpm --with-fpm-group=php-fpm
make && make install
make test

/usr/local/php/bin/php -v

docker 方式

#!/bin/bash
# 脚本名称:php-install.docker.sh

docker pull php:latest
docker run --name myphp -p 80:80 -d php:latest

dnf 方式(CentOS 8+ / RHEL 8+,PHP 8)

# 更新系统
sudo dnf update
sudo dnf upgrade
sudo reboot

# 启用 EPEL & Remi 软件库
# PHP 8 在 CentOS 8 / RHEL 8 默认仓库中不可用,必须启用 EPEL 和 remi
dnf install -y epel-release
dnf install -y http://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf install -y dnf-utils

# 查看可用版本并安装 Remi 模块
dnf module list php
dnf module reset php
dnf module install -y php:remi-8.3

# 安装 php-fpm 并启动
dnf install -y php-fpm
systemctl enable php-fpm --now
systemctl status php-fpm

# 安装常用扩展
dnf install -y php-{mysqlnd,xml,xmlrpc,curl,gd,imagick,mbstring,opcache,soap,zip}

PHP 运行参数建议

编辑 /etc/php.ini:

upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000

四种方式对比

方式适用场景优点缺点
yum / dnf生产环境快速部署有系统服务、易升级版本受仓库限制
源码需要定制编译参数可控性最高编译慢、升级麻烦
docker本地开发、隔离环境环境一致、秒级切换需额外维护镜像与持久化

分享这篇文章:

上一篇
PHP 扩展安装:phpredis 与 Opcache
下一篇
CentOS 搭建 Node.js 环境