游乐游手机版
首页/编程语言/文章详情

php在centos上如何安装

时间:2026-05-02 17:59
在CentOS上安装PHP:两种主流方案详解 为CentOS系统部署PHP环境,方法不止一种。选择哪种,往往取决于你对版本控制、自定义程度以及维护便利性的需求。下面这张图可以帮你快速建立起一个直观的印象: 接下来,我们将深入探讨两种最常用的安装路径:一种是利用第三方仓库快速部署,另一种则是通过源码编

在CentOS上安装PHP:两种主流方案详解

为CentOS系统部署PHP环境,方法不止一种。选择哪种,往往取决于你对版本控制、自定义程度以及维护便利性的需求。下面这张图可以帮你快速建立起一个直观的印象:

php在centos上如何安装

接下来,我们将深入探讨两种最常用的安装路径:一种是利用第三方仓库快速部署,另一种则是通过源码编译进行深度定制。

方法一:使用Remi仓库安装PHP

对于大多数追求效率和稳定性的场景,通过Remi仓库安装是首选。它的优势在于能方便地管理多个PHP版本,并且保持了与CentOS官方仓库类似的包管理体验。

  1. 添加Remi仓库

    首先,需要将Remi仓库添加到你的系统源中。打开终端,依次执行以下命令:

    sudo yum install epel-release yum-utils
    sudo yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi-release-7.rpm

    请注意,如果你的系统是CentOS 8,需要将上述命令中的remi-release-7.rpm替换为remi-release-8.rpm

  2. 启用PHP模块

    仓库就绪后,就可以安装特定版本的PHP了。Remi仓库为不同版本的PHP提供了独立的模块。例如,要安装PHP 7.4及其常用扩展,可以运行:

    sudo yum --enablerepo=remi install php74-php php74-php-mysqlnd php74-php-gd php74-php-xml php74-php-mbstring php74-php-curl php74-php-zip

    若是想安装更新的PHP 8.0,命令则调整为:

    sudo yum --enablerepo=remi install php80-php php80-php-mysqlnd php80-php-gd php80-php-xml php80-php-mbstring php80-php-curl php80-php-zip

    这里列出的扩展(如mysqlnd, gd, xml等)涵盖了Web应用开发的基本需求,你可以根据实际情况增减。

  3. 重启Web服务器

    安装完成后,必须重启Web服务器以使新安装的PHP生效。

    对于Apache服务器:

    sudo systemctl restart httpd

    对于Nginx服务器:

    sudo systemctl restart nginx

方法二:使用源码编译安装PHP

如果你需要对PHP进行深度定制,或者需要某个非常特定的版本,那么源码编译安装是你的不二之选。这种方法步骤稍多,但赋予了开发者最大的控制权。

  1. 安装依赖包

    编译之前,得先把“工具箱”准备好。安装必要的开发工具和依赖包:

    sudo yum groupinstall "Development Tools"
    sudo yum install wget curl git php-devel php-pear
  2. 下载PHP源码

    前往PHP官方站点,选择你需要的版本源码包进行下载并解压:

    cd /usr/src
    sudo wget https://www.php.net/distributions/php-7.4.33.tar.gz
    sudo tar -zxvf php-7.4.33.tar.gz
    cd php-7.4.33

    当然,你可以将php-7.4.33.tar.gz替换为任何你想要的PHP版本源码包。

  3. 配置和编译

    这是最关键的一步。通过./configure命令来设定编译参数,定义安装路径、启用或禁用扩展。下面是一个常见的基础配置示例:

    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-mbstring --enable-zip --enable-curl --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=/usr/bin/mysql_config --with-pdo-mysql=/usr/bin/mysql_config --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr
    make && sudo make install

    这个配置指定了安装目录、配置文件路径,并启用了mbstring、zip、curl、MySQLi、PDO_MySQL和GD等核心扩展。务必根据你的实际生产需求,调整这些配置选项。

  4. 配置PHP

    编译安装完成后,需要复制一份配置文件到指定位置:

    sudo cp php.ini-production /usr/local/php/etc/php.ini

    之后,你可以根据需要,仔细打磨/usr/local/php/etc/php.ini这个文件,调整内存限制、上传大小等运行时参数。

  5. 重启Web服务器

    同样,别忘了重启Web服务器来加载全新编译的PHP。

    对于Apache:

    sudo systemctl restart httpd

    对于Nginx:

    sudo systemctl restart nginx

验证安装

无论采用上述哪种方法,安装完成后,都有一个简单的标准动作来确认成果:打开终端,输入以下命令:

php -v

如果屏幕上清晰地显示出你所安装的PHP版本号和信息,那么恭喜你,环境搭建已经成功。

两种方法,一条通往快速部署与便捷管理,另一条通向高度定制与深度控制。根据你的项目需求和运维习惯做出选择,就能让PHP在CentOS上顺畅运行起来。

来源:https://www.yisu.com/ask/4970383.html
上一篇centos php如何性能测试 下一篇centos php配置如何优化执行时间
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
PyTorch中使用多维索引张量对高维张量批量索引的正确方法
编程语言 · 2026-07-03

PyTorch中使用多维索引张量对高维张量批量索引的正确方法

本文深入讲解如何在 PyTorch 中利用形状为 [b, k] 的索引张量 B,对形状为 [b, m, n] 的高维张量 A 执行高效批量索引,最终得到 [b, k, n] 的输出。核心思路在于合理扩展索引维度并配合 torch gather 实现精准的逐行抽取。 很多人处理高维张量的批量索引时都会

Go中...操作符解包切片传递可变参数函数
编程语言 · 2026-07-03

Go中...操作符解包切片传递可变参数函数

在 Go 语言中,` ` 运算符放在切片变量后面(如 `slice `)的作用是将该切片“展开”为多个独立参数,专门用于调用那些接受可变参数(` T`)的函数,例如 `append` 或 `fmt Println`。这是一种类型安全的语法糖,并非省略号或通配符,能够帮助开发者更简洁地处理

macOS与WSL2下PHP多版本切换失效问题排查与修复指南
编程语言 · 2026-07-03

macOS与WSL2下PHP多版本切换失效问题排查与修复指南

本文深入分析在 macOS 或 WSL2(Ubuntu)开发环境中,通过 Homebrew 管理 PHP 多版本时,php -v 始终显示旧版本(如 php@5 6)的深层原因,并给出系统性解决方案,覆盖 PATH 冲突、符号链接逻辑、Shell 初始化配置、系统残留配置等关键环节。 遇到这种情况的

PHP JSON解析深层嵌套对象属性访问失败的解决方法
编程语言 · 2026-07-03

PHP JSON解析深层嵌套对象属性访问失败的解决方法

使用 json_decode() 解析 API 返回的 JSON 数据时,经常遇到某个子属性无法正常获取,始终返回 NULL —— 这是许多 PHP 开发者都曾碰到过的棘手问题。通常并非数据丢失,而是对象嵌套层级比预期更深,导致访问路径不正确。 举例来说,你看到返回的 JSON 里有一个 appea

nnU-Net v2预处理卡死问题的成因分析与实用解决指南
编程语言 · 2026-07-03

nnU-Net v2预处理卡死问题的成因分析与实用解决指南

> 使用 nnUNetv2_plan_and_preprocess 处理大规模数据集(例如 704 例样本)时,程序常因多进程加载导致死锁而停滞。核心原因在于默认并发数过高引发资源竞争或 I O 阻塞,适当降低并发数即可稳定完成全量预处理。 你在使用 `nnunetv2_plan_and_prepr