在CentOS 7.2这一稳定且广泛使用的企业级操作系统上构建PHP环境是许多Web开发者和系统管理员的基础任务,由于其发布时间较早,CentOS 7.2的官方默认软件仓库提供的PHP版本通常是PHP 5.4,该版本早已停止官方支持,存在安全风险且缺乏现代特性,为了获得一个安全、高效且功能丰富的PHP环境,采用第三方仓库(如Remi)是业界公认的最佳实践,本文将详细介绍如何在CentOS 7.2上,从准备工作到最终验证,一步步搭建一个现代化的PHP环境。
环境准备与基础更新
在进行任何软件安装之前,确保系统处于最新状态是一个良好的习惯,这可以修复已知的系统漏洞并确保软件包依赖关系的完整性,通过SSH连接到您的CentOS 7.2服务器,并执行以下命令来更新所有系统软件包:
sudo yum update -y
更新完成后,建议安装一些基础的管理工具,例如wget
和vim
,它们在后续的配置过程中会非常有用。
sudo yum install -y wget vim
安装PHP:选择正确的仓库
面对CentOS 7.2的默认PHP版本问题,我们有两种主要选择:使用默认仓库(不推荐)或使用Remi仓库(强烈推荐)。
使用默认YUM仓库(不推荐)
这是最简单的方式,但正如前述,它会安装PHP 5.4,除非您有维护旧项目的特殊需求,否则应完全避免此方法。
sudo yum install -y php
安装后可以通过 php -v
命令查看版本,结果将是5.4.x。
使用Remi仓库(推荐)
Remi仓库是一个专门为RHEL及其衍生系统(如CentOS)提供最新版PHP、MySQL等软件的第三方仓库,它是构建现代PHP环境的首选。
步骤1:安装EPEL仓库
Remi仓库依赖于EPEL (Extra Packages for Enterprise Linux)。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
步骤2:安装Remi仓库配置包
sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
步骤3:启用目标PHP版本的仓库
Remi仓库为多个PHP版本提供了独立的配置文件,要安装PHP 7.4(一个稳定且广泛使用的版本),您需要启用remi-php74
仓库,安装yum-utils
以获得yum-config-manager
工具。
sudo yum install -y yum-utils sudo yum-config-manager --enable remi-php74
如果您需要PHP 8.0或更高版本,只需将remi-php74
替换为相应的remi-php80
等。
步骤4:安装PHP及常用扩展
您可以安装PHP 7.4以及一系列常用的扩展,这些扩展极大地增强了PHP的功能,例如数据库连接、图像处理、XML处理等。
sudo yum install -y php php-cli php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache
php-cli
: 命令行接口。php-fpm
: FastCGI进程管理器,与Nginx配合使用效率极高。php-mysqlnd
: MySQL数据库的原生驱动。php-gd
: 图像处理库。php-xml
和php-mbstring
: 处理XML和多字节字符串的必备库。php-opcache
: 性能加速的Opcode缓存。
配置Web服务器
PHP环境通常需要与Web服务器(如Apache或Nginx)协同工作。
对于Apache (httpd)
Apache在CentOS中通常能自动与通过YUM安装的PHP集成,安装Apache后,只需启动服务即可。
sudo yum install -y httpd sudo systemctl start httpd sudo systemctl enable httpd
对于Nginx
Nginx需要与PHP-FPM配合,您需要配置Nginx,将.php
文件的请求转发给PHP-FPM处理,编辑/etc/nginx/nginx.conf
或在/etc/nginx/conf.d/
目录下创建一个新的配置文件,添加如下location
块:
server { listen 80; server_name your_domain.com; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
配置完成后,启动并启用Nginx和PHP-FPM服务。
sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl start php-fpm sudo systemctl enable php-fpm
验证PHP安装
为了确认PHP环境已成功搭建,可以创建一个phpinfo()
文件,在您的Web根目录(例如Apache的/var/www/html/
或Nginx的/usr/share/nginx/html/
)下创建一个名为info.php
的文件:
sudo vim /usr/share/nginx/html/info.php
在文件中填入以下内容:
<?php phpinfo(); ?>
保存文件后,在浏览器中访问 http://your_server_ip/info.php
,如果一切正常,您将看到一个详细的PHP配置信息页面,其中包含了您安装的PHP版本、已加载的扩展以及各项配置参数。验证完毕后,为了安全起见,请务必删除此文件。
安装方式对比
下表小编总结了两种安装方式的核心差异,帮助您做出明智选择。
特性 | CentOS YUM 默认源 | Remi 仓库 |
---|---|---|
易用性 | 非常简单 | 简单,但需额外配置步骤 |
PHP 版本 | PHP 5.4 (已过时,不安全) | 多版本可选 (PHP 7.x, 8.x) |
安全性 | 低,无官方安全更新 | 高,紧跟上游安全补丁 |
扩展支持 | 基础,版本老旧 | 丰富,更新及时,与PHP版本匹配 |
推荐度 | 仅用于特定遗留场景维护 | 强烈推荐用于所有新项目 |
相关问答FAQs
Q1: 我已经按照步骤安装了PHP和Nginx,但访问.php文件时,浏览器直接下载了文件或者显示了源代码,而不是执行它,这是为什么?
A1: 这是典型的Nginx与PHP-FPM配置不当问题,请检查以下几点:
- PHP-FPM服务状态:确认PHP-FPM服务正在运行,使用命令
sudo systemctl status php-fpm
查看其状态,如果未运行,则使用sudo systemctl start php-fpm
启动它。 - Nginx配置:仔细检查您的Nginx配置文件中的
location ~ .php$
块,确保fastcgi_pass
指令指向的地址和端口(如0.0.1:9000
)与PHP-FPM的监听地址一致(可在/etc/php-fpm.d/www.conf
中查看listen
参数)。 - 配置文件语法:在修改Nginx配置后,务必使用
sudo nginx -t
命令检查配置文件语法是否正确,然后使用sudo systemctl reload nginx
重新加载配置。
Q2: 我在项目中需要一个特定的PHP扩展,比如Redis或者ImageMagick,应该如何安装?
A2: 使用Remi仓库安装扩展非常方便,您可以使用yum search
命令来查找可用的扩展包,要查找Redis扩展:
sudo yum search php-redis
搜索结果会显示可用的包名,通常是php-redis
,使用yum install
命令进行安装:
sudo yum install -y php-redis
安装完成后,必须重启PHP-FPM服务才能让新扩展生效:
sudo systemctl restart php-fpm
之后,您就可以在phpinfo()
页面中看到新安装的Redis扩展信息了,对于其他扩展,如ImageMagick,包名通常是php-pecl-imagick
,安装流程完全相同。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复