在CentOS上编译安装PHP是一个相对复杂的过程,需要多个步骤来确保正确安装和配置,本文将详细介绍如何在CentOS 7上从源代码编译并安装PHP 8.1,包括必要的依赖安装、编译选项以及如何配置Nginx以支持PHP应用。
编译安装PHP
1. 依赖环境

在开始编译PHP之前,首先需要安装一些必需的依赖包,这些依赖包包括C编译器(如gCC)、Make工具、以及其他一些库文件,具体命令如下:
- yum y install gcc gccc++ make wget libxml2devel openssldevel curldevel \
- libjpegdevel libpngdevel freetypedevel bison autoconf automake libtool cmake zlibdevel pcredevel gd gddevel
2. 下载并解压
需要从PHP官网下载最新的PHP源码包,并将其解压到指定目录中,这里以PHP 8.1.0为例:
- cd /usr/local/src
- wget https://www.php.net/distributions/php8.1.0.tar.gz
- tar zxvf php8.1.0.tar.gz
- cd php8.1.0
3. 配置、编译安装
在解压后的目录下,使用./configure
脚本来配置PHP的编译选项,可以根据实际需求调整以下配置选项:
- ./configure prefix=/usr/local/php8 \
- withconfigfilepath=/usr/local/php8 \
- enablefpm \
- withfpmuser=nginx \
- withfpmgroup=nginx \
- withmysqli \
- withpdomysql \
- withopenssl \
- withzlib \
- enablesockets \
- enablezip \
- withcurl \
- withgd \
- withjpegdir \
- withfreetypedir \
- enablembstring \
- withcurl \
- enableftp \
- withgettext \
- enablesession \
- withlibxmldir \
- withopenssl \
- withpcreregex \
- withzlib \
- enablesoap \
- enableopcache
配置完成后,使用make
命令进行编译,然后使用make install
命令进行安装:

- make
- make install
4. 创建系统用户、系统用户组
为了安全起见,建议为PHP创建一个单独的用户和用户组:
- groupadd php
- useradd r g php s /sbin/nologin php
5. 创建链接
为了让系统能够找到新安装的PHP可执行文件,需要创建相应的软链接:
- ln s /usr/local/php8/bin/php /usr/bin/php
- ln s /usr/local/php8/sbin/phpfpm /usr/sbin/phpfpm
6. 自动启动PHPFPM
为了能够在系统启动时自动运行PHPFPM服务,需要创建一个systemd服务文件:

- vim /usr/lib/systemd/system/phpfpm.service
在文件中添加以下内容:
- [Unit]
- Description=PHPFPM Service
- After=network.target
- [Service]
- Type=simple
- PIDFile=/run/phpfpm/phpfpm.pid
- ExecStart=/usr/sbin/phpfpm daemonize
- ExecReload=/bin/kill USR2 $MAINPID
- PrivateTmp=true
- User=php
- Group=php
- [Install]
- WantedBy=multiuser.target
保存文件后,使用以下命令启用并启动PHPFPM服务:
- systemctl daemonreload
- systemctl start phpfpm
- systemctl enable phpfpm
7. 配置 Nginx 使其支持 PHP 应用
需要配置Nginx以支持PHP应用,编辑Nginx的默认站点配置文件:
- vim /usr/local/nginx/conf/nginx.conf
在server
块中添加以下配置:
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- include fastcgi_params;
- }
保存文件后,重新加载NGINX配置以使更改生效:
- /usr/local/nginx/sbin/nginx s reload
依赖安装
如果系统中已经安装了旧版本的PHP,建议先将其卸载以避免潜在的冲突:
- yum remove y php
根据编译PHP时所需的依赖项,安装相应的扩展包,如果需要支持Redis扩展,可以执行以下命令:
- pecl install redis
- echo "extension=redis.so" > /usr/local/php8/etc/php.ini
FAQs(常见问题解答)
问题1:编译PHP时遇到缺少依赖库的错误怎么办?
答:如果在编译PHP过程中遇到缺少某个依赖库的错误提示,可以根据错误信息安装相应的依赖包,如果错误提示缺少libxml2库,可以执行yum install y libxml2devel
来安装该依赖包,同样地,对于其他缺失的依赖库也可以采取类似的方法进行安装。
问题2:如何检查已安装的PHP版本?
答:可以通过在终端中输入php v
命令来查看已安装的PHP版本信息,如果命令输出了PHP的版本号和其他相关信息,则说明PHP已成功安装并可以在系统中使用。